typia 4.0.0-dev.20230604 → 4.0.0

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 (290) 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/ArgumentParser.js +1 -1
  6. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  7. package/lib/executable/setup/CommandExecutor.js +1 -1
  8. package/lib/executable/setup/CommandExecutor.js.map +1 -1
  9. package/lib/executable/setup/FileRetriever.js +1 -1
  10. package/lib/executable/setup/FileRetriever.js.map +1 -1
  11. package/lib/executable/setup/PluginConfigurator.js +1 -1
  12. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  13. package/lib/factories/CommentFactory.js +1 -1
  14. package/lib/factories/CommentFactory.js.map +1 -1
  15. package/lib/factories/ExpressionFactory.js +1 -1
  16. package/lib/factories/ExpressionFactory.js.map +1 -1
  17. package/lib/factories/IdentifierFactory.js +1 -1
  18. package/lib/factories/IdentifierFactory.js.map +1 -1
  19. package/lib/factories/LiteralFactory.js +1 -1
  20. package/lib/factories/LiteralFactory.js.map +1 -1
  21. package/lib/factories/MetadataCollection.js +1 -2
  22. package/lib/factories/MetadataCollection.js.map +1 -1
  23. package/lib/factories/MetadataFactory.js +1 -1
  24. package/lib/factories/MetadataFactory.js.map +1 -1
  25. package/lib/factories/MetadataTagFactory.js +4 -2
  26. package/lib/factories/MetadataTagFactory.js.map +1 -1
  27. package/lib/factories/StatementFactory.js +1 -1
  28. package/lib/factories/StatementFactory.js.map +1 -1
  29. package/lib/factories/TemplateFactory.js +1 -1
  30. package/lib/factories/TemplateFactory.js.map +1 -1
  31. package/lib/factories/TypeFactory.js +1 -1
  32. package/lib/factories/TypeFactory.js.map +1 -1
  33. package/lib/factories/ValueFactory.js +1 -1
  34. package/lib/factories/ValueFactory.js.map +1 -1
  35. package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
  36. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_array.js +1 -2
  38. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  40. package/lib/functional/Namespace.js +1 -1
  41. package/lib/functional/Namespace.js.map +1 -1
  42. package/lib/metadata/Metadata.js +1 -2
  43. package/lib/metadata/Metadata.js.map +1 -1
  44. package/lib/metadata/MetadataObject.js +1 -2
  45. package/lib/metadata/MetadataObject.js.map +1 -1
  46. package/lib/programmers/ApplicationProgrammer.js +1 -1
  47. package/lib/programmers/ApplicationProgrammer.js.map +1 -1
  48. package/lib/programmers/AssertCloneProgrammer.js +1 -1
  49. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  50. package/lib/programmers/AssertParseProgrammer.js +1 -1
  51. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  52. package/lib/programmers/AssertProgrammer.js +1 -1
  53. package/lib/programmers/AssertProgrammer.js.map +1 -1
  54. package/lib/programmers/AssertPruneProgrammer.js +1 -1
  55. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  56. package/lib/programmers/AssertStringifyProgrammer.js +1 -1
  57. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  58. package/lib/programmers/CheckerProgrammer.js +1 -1
  59. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  60. package/lib/programmers/CloneProgrammer.js +1 -1
  61. package/lib/programmers/CloneProgrammer.js.map +1 -1
  62. package/lib/programmers/FeatureProgrammer.js +1 -1
  63. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  64. package/lib/programmers/IsCloneProgrammer.js +1 -1
  65. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  66. package/lib/programmers/IsParseProgrammer.js +1 -1
  67. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  68. package/lib/programmers/IsProgrammer.js +1 -1
  69. package/lib/programmers/IsProgrammer.js.map +1 -1
  70. package/lib/programmers/IsPruneProgrammer.js +1 -1
  71. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  72. package/lib/programmers/IsStringifyProgrammer.js +1 -1
  73. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  74. package/lib/programmers/LiteralsProgrammer.js +1 -1
  75. package/lib/programmers/LiteralsProgrammer.js.map +1 -1
  76. package/lib/programmers/PruneProgrammer.js +1 -1
  77. package/lib/programmers/PruneProgrammer.js.map +1 -1
  78. package/lib/programmers/RandomProgrammer.js +1 -1
  79. package/lib/programmers/RandomProgrammer.js.map +1 -1
  80. package/lib/programmers/StringifyProgrammer.js +1 -1
  81. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  82. package/lib/programmers/TypiaProgrammer.js +1 -1
  83. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  84. package/lib/programmers/ValidateCloneProgrammer.js +1 -1
  85. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  86. package/lib/programmers/ValidateParseProgrammer.js +1 -1
  87. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  88. package/lib/programmers/ValidateProgrammer.js +1 -1
  89. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  90. package/lib/programmers/ValidatePruneProgrammer.js +1 -1
  91. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  92. package/lib/programmers/ValidateStringifyProgrammer.js +1 -1
  93. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  94. package/lib/programmers/helpers/AtomicPredicator.js +1 -1
  95. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  96. package/lib/programmers/helpers/CloneJoiner.js +1 -1
  97. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  98. package/lib/programmers/helpers/OptionPredicator.js +1 -1
  99. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  100. package/lib/programmers/helpers/PruneJoiner.js +1 -1
  101. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  102. package/lib/programmers/helpers/RandomJoiner.js +1 -1
  103. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  104. package/lib/programmers/helpers/RandomRanger.js +1 -1
  105. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  106. package/lib/programmers/helpers/StringifyJoinder.js +1 -1
  107. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  108. package/lib/programmers/helpers/StringifyPredicator.js +1 -1
  109. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  110. package/lib/programmers/helpers/UnionExplorer.js +1 -1
  111. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  112. package/lib/programmers/helpers/UnionPredicator.js +1 -1
  113. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  114. package/lib/programmers/internal/application_number.js +4 -1
  115. package/lib/programmers/internal/application_number.js.map +1 -1
  116. package/lib/transformers/CallExpressionTransformer.js +1 -1
  117. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  118. package/lib/transformers/FileTransformer.js +1 -1
  119. package/lib/transformers/FileTransformer.js.map +1 -1
  120. package/lib/transformers/ImportTransformer.js +1 -1
  121. package/lib/transformers/ImportTransformer.js.map +1 -1
  122. package/lib/transformers/NodeTransformer.js +1 -1
  123. package/lib/transformers/NodeTransformer.js.map +1 -1
  124. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +1 -1
  125. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  126. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js +1 -1
  127. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js.map +1 -1
  128. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js +1 -1
  129. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js.map +1 -1
  130. package/lib/transformers/features/miscellaneous/CloneTransformer.js +1 -1
  131. package/lib/transformers/features/miscellaneous/CloneTransformer.js.map +1 -1
  132. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js +1 -1
  133. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js.map +1 -1
  134. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js +1 -1
  135. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js.map +1 -1
  136. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js +1 -1
  137. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js.map +1 -1
  138. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js +1 -1
  139. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js.map +1 -1
  140. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js +1 -1
  141. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js.map +1 -1
  142. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js +1 -1
  143. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js.map +1 -1
  144. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js +1 -1
  145. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js.map +1 -1
  146. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js +1 -1
  147. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js.map +1 -1
  148. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js +1 -1
  149. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js.map +1 -1
  150. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js +1 -1
  151. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js.map +1 -1
  152. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js +1 -1
  153. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js.map +1 -1
  154. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js +1 -1
  155. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js.map +1 -1
  156. package/lib/transformers/features/miscellaneous/MetadataTransformer.js +1 -1
  157. package/lib/transformers/features/miscellaneous/MetadataTransformer.js.map +1 -1
  158. package/lib/transformers/features/miscellaneous/PruneTransformer.js +1 -1
  159. package/lib/transformers/features/miscellaneous/PruneTransformer.js.map +1 -1
  160. package/lib/transformers/features/miscellaneous/RandomTransformer.js +1 -1
  161. package/lib/transformers/features/miscellaneous/RandomTransformer.js.map +1 -1
  162. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js +1 -1
  163. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js.map +1 -1
  164. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js +1 -1
  165. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js.map +1 -1
  166. package/lib/transformers/features/parsers/AssertParseTransformer.js +1 -1
  167. package/lib/transformers/features/parsers/AssertParseTransformer.js.map +1 -1
  168. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js +1 -1
  169. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js.map +1 -1
  170. package/lib/transformers/features/parsers/CreateIsParseTransformer.js +1 -1
  171. package/lib/transformers/features/parsers/CreateIsParseTransformer.js.map +1 -1
  172. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js +1 -1
  173. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js.map +1 -1
  174. package/lib/transformers/features/parsers/IsParseTransformer.js +1 -1
  175. package/lib/transformers/features/parsers/IsParseTransformer.js.map +1 -1
  176. package/lib/transformers/features/parsers/ValidateParseTransformer.js +1 -1
  177. package/lib/transformers/features/parsers/ValidateParseTransformer.js.map +1 -1
  178. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js +1 -1
  179. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js.map +1 -1
  180. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js +1 -1
  181. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js.map +1 -1
  182. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js +1 -1
  183. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js.map +1 -1
  184. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js +1 -1
  185. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js.map +1 -1
  186. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js +1 -1
  187. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js.map +1 -1
  188. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js +1 -1
  189. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js.map +1 -1
  190. package/lib/transformers/features/stringifiers/StringifyTransformer.js +1 -1
  191. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
  192. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js +1 -1
  193. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js.map +1 -1
  194. package/lib/transformers/features/validators/AssertTransformer.js +1 -1
  195. package/lib/transformers/features/validators/AssertTransformer.js.map +1 -1
  196. package/lib/transformers/features/validators/CreateAssertTransformer.js +1 -1
  197. package/lib/transformers/features/validators/CreateAssertTransformer.js.map +1 -1
  198. package/lib/transformers/features/validators/CreateIsTransformer.js +1 -1
  199. package/lib/transformers/features/validators/CreateIsTransformer.js.map +1 -1
  200. package/lib/transformers/features/validators/CreateValidateTransformer.js +1 -1
  201. package/lib/transformers/features/validators/CreateValidateTransformer.js.map +1 -1
  202. package/lib/transformers/features/validators/IsTransformer.js +1 -1
  203. package/lib/transformers/features/validators/IsTransformer.js.map +1 -1
  204. package/lib/transformers/features/validators/ValidateTransformer.js +1 -1
  205. package/lib/transformers/features/validators/ValidateTransformer.js.map +1 -1
  206. package/lib/transformers/internal/GenericTransformer.js +1 -1
  207. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  208. package/lib/utils/ArrayUtil.js +1 -1
  209. package/lib/utils/ArrayUtil.js.map +1 -1
  210. package/lib/utils/Escaper.js +1 -1
  211. package/lib/utils/Escaper.js.map +1 -1
  212. package/lib/utils/MapUtil.js +1 -1
  213. package/lib/utils/MapUtil.js.map +1 -1
  214. package/lib/utils/PatternUtil.js +1 -1
  215. package/lib/utils/PatternUtil.js.map +1 -1
  216. package/lib/utils/RandomGenerator.js +1 -1
  217. package/lib/utils/RandomGenerator.js.map +1 -1
  218. package/package.json +3 -3
  219. package/src/IRandomGenerator.ts +34 -34
  220. package/src/factories/IdentifierFactory.ts +65 -65
  221. package/src/factories/MetadataCollection.ts +254 -254
  222. package/src/factories/MetadataFactory.ts +40 -40
  223. package/src/factories/MetadataTagFactory.ts +300 -298
  224. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  225. package/src/factories/internal/metadata/emplace_metadata_definition.ts +35 -35
  226. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  227. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  228. package/src/factories/internal/metadata/explore_metadata.ts +66 -66
  229. package/src/factories/internal/metadata/iterate_metadata.ts +77 -77
  230. package/src/factories/internal/metadata/iterate_metadata_array.ts +25 -29
  231. package/src/factories/internal/metadata/iterate_metadata_collection.ts +130 -130
  232. package/src/factories/internal/metadata/iterate_metadata_definition.ts +30 -30
  233. package/src/factories/internal/metadata/iterate_metadata_object.ts +49 -49
  234. package/src/factories/internal/metadata/iterate_metadata_sort.ts +68 -68
  235. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -25
  236. package/src/factories/internal/metadata/iterate_metadata_union.ts +68 -68
  237. package/src/metadata/IMetadata.ts +27 -27
  238. package/src/metadata/IMetadataAlias.ts +12 -12
  239. package/src/metadata/IMetadataApplication.ts +7 -7
  240. package/src/metadata/IMetadataArray.ts +10 -10
  241. package/src/metadata/IMetadataCollection.ts +11 -11
  242. package/src/metadata/IMetadataDictionary.ts +14 -14
  243. package/src/metadata/IMetadataObject.ts +18 -18
  244. package/src/metadata/IMetadataProperty.ts +11 -11
  245. package/src/metadata/IMetadataTuple.ts +10 -10
  246. package/src/metadata/Metadata.ts +585 -585
  247. package/src/metadata/MetadataAlias.ts +61 -61
  248. package/src/metadata/MetadataArray.ts +52 -52
  249. package/src/metadata/MetadataObject.ts +114 -114
  250. package/src/metadata/MetadataProperty.ts +64 -64
  251. package/src/metadata/MetadataTuple.ts +53 -53
  252. package/src/programmers/ApplicationProgrammer.ts +55 -55
  253. package/src/programmers/AssertProgrammer.ts +291 -291
  254. package/src/programmers/CheckerProgrammer.ts +1182 -1182
  255. package/src/programmers/CloneProgrammer.ts +595 -595
  256. package/src/programmers/FeatureProgrammer.ts +495 -495
  257. package/src/programmers/IsProgrammer.ts +250 -250
  258. package/src/programmers/LiteralsProgrammer.ts +66 -66
  259. package/src/programmers/PruneProgrammer.ts +550 -550
  260. package/src/programmers/RandomProgrammer.ts +589 -589
  261. package/src/programmers/StringifyProgrammer.ts +990 -990
  262. package/src/programmers/ValidateProgrammer.ts +313 -313
  263. package/src/programmers/helpers/FunctionImporeter.ts +78 -78
  264. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  265. package/src/programmers/helpers/UnionExplorer.ts +301 -301
  266. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  267. package/src/programmers/helpers/disable_function_importer_declare.ts +26 -26
  268. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  269. package/src/programmers/internal/application_array.ts +64 -64
  270. package/src/programmers/internal/application_boolean.ts +15 -15
  271. package/src/programmers/internal/application_constant.ts +26 -26
  272. package/src/programmers/internal/application_default.ts +17 -17
  273. package/src/programmers/internal/application_definition.ts +45 -45
  274. package/src/programmers/internal/application_native.ts +39 -39
  275. package/src/programmers/internal/application_number.ts +74 -71
  276. package/src/programmers/internal/application_object.ts +167 -167
  277. package/src/programmers/internal/application_schema.ts +164 -164
  278. package/src/programmers/internal/application_tuple.ts +77 -77
  279. package/src/programmers/internal/check_union_array_like.ts +329 -329
  280. package/src/programmers/internal/feature_object_entries.ts +63 -63
  281. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  282. package/src/schemas/IJsonApplication.ts +8 -8
  283. package/src/schemas/IJsonComponents.ts +45 -45
  284. package/src/schemas/IJsonSchema.ts +134 -134
  285. package/src/transformers/CallExpressionTransformer.ts +179 -179
  286. package/src/transformers/FileTransformer.ts +47 -47
  287. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +104 -104
  288. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  289. package/src/utils/ArrayUtil.ts +45 -45
  290. package/src/utils/RandomGenerator.ts +81 -81
@@ -1,77 +1,77 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
- import { MetadataCollection } from "../../MetadataCollection";
7
- import { MetadataFactory } from "../../MetadataFactory";
8
- import { iterate_metadata_array } from "./iterate_metadata_array";
9
- import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
10
- import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
11
- import { iterate_metadata_constant } from "./iterate_metadata_constant";
12
- import { iterate_metadata_definition } from "./iterate_metadata_definition";
13
- import { iterate_metadata_map } from "./iterate_metadata_map";
14
- import { iterate_metadata_native } from "./iterate_metadata_native";
15
- import { iterate_metadata_object } from "./iterate_metadata_object";
16
- import { iterate_metadata_resolve } from "./iterate_metadata_resolve";
17
- import { iterate_metadata_set } from "./iterate_metadata_set";
18
- import { iterate_metadata_template } from "./iterate_metadata_template";
19
- import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
20
- import { iterate_metadata_union } from "./iterate_metadata_union";
21
-
22
- export const iterate_metadata =
23
- (checker: ts.TypeChecker) =>
24
- (options: MetadataFactory.IOptions) =>
25
- (collection: MetadataCollection) =>
26
- (
27
- meta: Metadata,
28
- type: ts.Type,
29
- parentResolved: boolean,
30
- aliased: boolean,
31
- ): void => {
32
- if (type.isTypeParameter() === true)
33
- throw new Error(
34
- `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
35
- );
36
- // CHECK SPECIAL CASES
37
- if (
38
- (aliased !== true &&
39
- iterate_metadata_definition(checker)(options)(collection)(
40
- meta,
41
- type,
42
- )) ||
43
- iterate_metadata_union(checker)(options)(collection)(
44
- meta,
45
- type,
46
- parentResolved,
47
- ) ||
48
- iterate_metadata_resolve(checker)(options)(collection)(
49
- meta,
50
- type,
51
- parentResolved,
52
- )
53
- )
54
- return;
55
-
56
- // ITERATE CASES
57
- iterate_metadata_coalesce(meta, type) ||
58
- iterate_metadata_constant(checker)(options)(meta, type) ||
59
- iterate_metadata_template(checker)(options)(collection)(
60
- meta,
61
- type,
62
- ) ||
63
- iterate_metadata_atomic(meta, type) ||
64
- iterate_metadata_tuple(checker)(options)(collection)(
65
- meta,
66
- type as ts.TupleType,
67
- ) ||
68
- iterate_metadata_array(checker)(options)(collection)(meta, type) ||
69
- iterate_metadata_native(checker)(meta, type) ||
70
- iterate_metadata_map(checker)(options)(collection)(meta, type) ||
71
- iterate_metadata_set(checker)(options)(collection)(meta, type) ||
72
- iterate_metadata_object(checker)(options)(collection)(
73
- meta,
74
- type,
75
- parentResolved,
76
- );
77
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+ import { MetadataCollection } from "../../MetadataCollection";
7
+ import { MetadataFactory } from "../../MetadataFactory";
8
+ import { iterate_metadata_array } from "./iterate_metadata_array";
9
+ import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
10
+ import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
11
+ import { iterate_metadata_constant } from "./iterate_metadata_constant";
12
+ import { iterate_metadata_definition } from "./iterate_metadata_definition";
13
+ import { iterate_metadata_map } from "./iterate_metadata_map";
14
+ import { iterate_metadata_native } from "./iterate_metadata_native";
15
+ import { iterate_metadata_object } from "./iterate_metadata_object";
16
+ import { iterate_metadata_resolve } from "./iterate_metadata_resolve";
17
+ import { iterate_metadata_set } from "./iterate_metadata_set";
18
+ import { iterate_metadata_template } from "./iterate_metadata_template";
19
+ import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
20
+ import { iterate_metadata_union } from "./iterate_metadata_union";
21
+
22
+ export const iterate_metadata =
23
+ (checker: ts.TypeChecker) =>
24
+ (options: MetadataFactory.IOptions) =>
25
+ (collection: MetadataCollection) =>
26
+ (
27
+ meta: Metadata,
28
+ type: ts.Type,
29
+ parentResolved: boolean,
30
+ aliased: boolean,
31
+ ): void => {
32
+ if (type.isTypeParameter() === true)
33
+ throw new Error(
34
+ `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
35
+ );
36
+ // CHECK SPECIAL CASES
37
+ if (
38
+ (aliased !== true &&
39
+ iterate_metadata_definition(checker)(options)(collection)(
40
+ meta,
41
+ type,
42
+ )) ||
43
+ iterate_metadata_union(checker)(options)(collection)(
44
+ meta,
45
+ type,
46
+ parentResolved,
47
+ ) ||
48
+ iterate_metadata_resolve(checker)(options)(collection)(
49
+ meta,
50
+ type,
51
+ parentResolved,
52
+ )
53
+ )
54
+ return;
55
+
56
+ // ITERATE CASES
57
+ iterate_metadata_coalesce(meta, type) ||
58
+ iterate_metadata_constant(checker)(options)(meta, type) ||
59
+ iterate_metadata_template(checker)(options)(collection)(
60
+ meta,
61
+ type,
62
+ ) ||
63
+ iterate_metadata_atomic(meta, type) ||
64
+ iterate_metadata_tuple(checker)(options)(collection)(
65
+ meta,
66
+ type as ts.TupleType,
67
+ ) ||
68
+ iterate_metadata_array(checker)(options)(collection)(meta, type) ||
69
+ iterate_metadata_native(checker)(meta, type) ||
70
+ iterate_metadata_map(checker)(options)(collection)(meta, type) ||
71
+ iterate_metadata_set(checker)(options)(collection)(meta, type) ||
72
+ iterate_metadata_object(checker)(options)(collection)(
73
+ meta,
74
+ type,
75
+ parentResolved,
76
+ );
77
+ };
@@ -1,29 +1,25 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataArray } from "../../../metadata/MetadataArray";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_array } from "./emplace_metadata_array";
11
-
12
- export const iterate_metadata_array =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
17
- // @todo -> TS 5.2 supports it
18
- if (
19
- !(checker as any).isArrayType(type) &&
20
- !(checker as any).isArrayLikeType(type)
21
- )
22
- return false;
23
-
24
- const array: MetadataArray = emplace_metadata_array(checker)(options)(
25
- collection,
26
- )(type, meta.nullable);
27
- ArrayUtil.add(meta.arrays, array, (elem) => elem.name === array.name);
28
- return true;
29
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataArray } from "../../../metadata/MetadataArray";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_array } from "./emplace_metadata_array";
11
+
12
+ export const iterate_metadata_array =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type): boolean => {
17
+ if (!checker.isArrayType(type) && !checker.isArrayLikeType(type))
18
+ return false;
19
+
20
+ const array: MetadataArray = emplace_metadata_array(checker)(options)(
21
+ collection,
22
+ )(type, meta.nullable);
23
+ ArrayUtil.add(meta.arrays, array, (elem) => elem.name === array.name);
24
+ return true;
25
+ };
@@ -1,130 +1,130 @@
1
- import { Metadata } from "../../../metadata/Metadata";
2
- import { MetadataArray } from "../../../metadata/MetadataArray";
3
- import { MetadataObject } from "../../../metadata/MetadataObject";
4
- import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
-
6
- import { MetadataCollection } from "../../MetadataCollection";
7
-
8
- export const iterate_metadata_collection = (
9
- collection: MetadataCollection,
10
- ): void => {
11
- for (const array of collection.arrays())
12
- if (array.recursive === null)
13
- collection.setArrayRecursive(
14
- array,
15
- isArrayRecursive(new Set())(array)(array.value),
16
- );
17
- for (const tuple of collection.tuples())
18
- if (tuple.recursive === null) {
19
- const visited: Set<Metadata> = new Set();
20
- collection.setTupleRecursive(
21
- tuple,
22
- tuple.elements.some(isTupleRecursive(visited)(tuple)),
23
- );
24
- }
25
- for (const obj of collection.objects())
26
- if (obj.recursive === null) {
27
- const visited: Set<Metadata> = new Set();
28
- collection.setObjectRecursive(
29
- obj,
30
- obj.properties.some((p) =>
31
- isObjectRecursive(visited)(obj)(p.value),
32
- ),
33
- );
34
- }
35
- };
36
-
37
- const isArrayRecursive =
38
- (visited: Set<Metadata>) =>
39
- (array: MetadataArray) =>
40
- (meta: Metadata): boolean => {
41
- if (visited.has(meta)) return false;
42
- visited.add(meta);
43
-
44
- return (
45
- meta.arrays.some(
46
- (a) => a === array || isArrayRecursive(visited)(array)(a.value),
47
- ) ||
48
- meta.aliases.some((d) =>
49
- isArrayRecursive(visited)(array)(d.value),
50
- ) ||
51
- meta.tuples.some(
52
- (t) =>
53
- !t.recursive &&
54
- t.elements.some((e) => isArrayRecursive(visited)(array)(e)),
55
- ) ||
56
- meta.maps.some((m) => isArrayRecursive(visited)(array)(m.value)) ||
57
- meta.sets.some((s) => isArrayRecursive(visited)(array)(s)) ||
58
- (meta.resolved !== null &&
59
- isArrayRecursive(visited)(array)(meta.resolved)) ||
60
- (meta.rest !== null && isArrayRecursive(visited)(array)(meta.rest))
61
- );
62
- };
63
-
64
- const isTupleRecursive =
65
- (visited: Set<Metadata>) =>
66
- (tuple: MetadataTuple) =>
67
- (meta: Metadata): boolean => {
68
- if (visited.has(meta)) return false;
69
- visited.add(meta);
70
-
71
- return (
72
- meta.tuples.some(
73
- (t) =>
74
- t === tuple ||
75
- t.elements.some((e) => isTupleRecursive(visited)(tuple)(e)),
76
- ) ||
77
- meta.arrays.some(
78
- (a) =>
79
- !a.recursive && isTupleRecursive(visited)(tuple)(a.value),
80
- ) ||
81
- meta.maps.some((m) => isTupleRecursive(visited)(tuple)(m.value)) ||
82
- meta.sets.some((s) => isTupleRecursive(visited)(tuple)(s)) ||
83
- meta.aliases.some((d) =>
84
- isTupleRecursive(visited)(tuple)(d.value),
85
- ) ||
86
- (meta.resolved !== null &&
87
- isTupleRecursive(visited)(tuple)(meta.resolved)) ||
88
- (meta.rest !== null && isTupleRecursive(visited)(tuple)(meta.rest))
89
- );
90
- };
91
-
92
- const isObjectRecursive =
93
- (visited: Set<Metadata>) =>
94
- (obj: MetadataObject) =>
95
- (meta: Metadata): boolean => {
96
- if (visited.has(meta)) return false;
97
-
98
- visited.add(meta);
99
- return (
100
- meta.objects.some(
101
- (o) =>
102
- obj === o ||
103
- o.properties.some((prop) =>
104
- isObjectRecursive(visited)(obj)(prop.value),
105
- ),
106
- ) ||
107
- meta.aliases.some((alias) =>
108
- isObjectRecursive(visited)(obj)(alias.value),
109
- ) ||
110
- meta.arrays.some(
111
- (array) =>
112
- !array.recursive &&
113
- isObjectRecursive(visited)(obj)(array.value),
114
- ) ||
115
- meta.tuples.some(
116
- (tuple) =>
117
- !tuple.recursive &&
118
- tuple.elements.some((elem) =>
119
- isObjectRecursive(visited)(obj)(elem),
120
- ),
121
- ) ||
122
- meta.maps.some((map) =>
123
- isObjectRecursive(visited)(obj)(map.value),
124
- ) ||
125
- meta.sets.some((value) => isObjectRecursive(visited)(obj)(value)) ||
126
- (meta.resolved !== null &&
127
- isObjectRecursive(visited)(obj)(meta.resolved)) ||
128
- (meta.rest !== null && isObjectRecursive(visited)(obj)(meta.rest))
129
- );
130
- };
1
+ import { Metadata } from "../../../metadata/Metadata";
2
+ import { MetadataArray } from "../../../metadata/MetadataArray";
3
+ import { MetadataObject } from "../../../metadata/MetadataObject";
4
+ import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
+
6
+ import { MetadataCollection } from "../../MetadataCollection";
7
+
8
+ export const iterate_metadata_collection = (
9
+ collection: MetadataCollection,
10
+ ): void => {
11
+ for (const array of collection.arrays())
12
+ if (array.recursive === null)
13
+ collection.setArrayRecursive(
14
+ array,
15
+ isArrayRecursive(new Set())(array)(array.value),
16
+ );
17
+ for (const tuple of collection.tuples())
18
+ if (tuple.recursive === null) {
19
+ const visited: Set<Metadata> = new Set();
20
+ collection.setTupleRecursive(
21
+ tuple,
22
+ tuple.elements.some(isTupleRecursive(visited)(tuple)),
23
+ );
24
+ }
25
+ for (const obj of collection.objects())
26
+ if (obj.recursive === null) {
27
+ const visited: Set<Metadata> = new Set();
28
+ collection.setObjectRecursive(
29
+ obj,
30
+ obj.properties.some((p) =>
31
+ isObjectRecursive(visited)(obj)(p.value),
32
+ ),
33
+ );
34
+ }
35
+ };
36
+
37
+ const isArrayRecursive =
38
+ (visited: Set<Metadata>) =>
39
+ (array: MetadataArray) =>
40
+ (meta: Metadata): boolean => {
41
+ if (visited.has(meta)) return false;
42
+ visited.add(meta);
43
+
44
+ return (
45
+ meta.arrays.some(
46
+ (a) => a === array || isArrayRecursive(visited)(array)(a.value),
47
+ ) ||
48
+ meta.aliases.some((d) =>
49
+ isArrayRecursive(visited)(array)(d.value),
50
+ ) ||
51
+ meta.tuples.some(
52
+ (t) =>
53
+ !t.recursive &&
54
+ t.elements.some((e) => isArrayRecursive(visited)(array)(e)),
55
+ ) ||
56
+ meta.maps.some((m) => isArrayRecursive(visited)(array)(m.value)) ||
57
+ meta.sets.some((s) => isArrayRecursive(visited)(array)(s)) ||
58
+ (meta.resolved !== null &&
59
+ isArrayRecursive(visited)(array)(meta.resolved)) ||
60
+ (meta.rest !== null && isArrayRecursive(visited)(array)(meta.rest))
61
+ );
62
+ };
63
+
64
+ const isTupleRecursive =
65
+ (visited: Set<Metadata>) =>
66
+ (tuple: MetadataTuple) =>
67
+ (meta: Metadata): boolean => {
68
+ if (visited.has(meta)) return false;
69
+ visited.add(meta);
70
+
71
+ return (
72
+ meta.tuples.some(
73
+ (t) =>
74
+ t === tuple ||
75
+ t.elements.some((e) => isTupleRecursive(visited)(tuple)(e)),
76
+ ) ||
77
+ meta.arrays.some(
78
+ (a) =>
79
+ !a.recursive && isTupleRecursive(visited)(tuple)(a.value),
80
+ ) ||
81
+ meta.maps.some((m) => isTupleRecursive(visited)(tuple)(m.value)) ||
82
+ meta.sets.some((s) => isTupleRecursive(visited)(tuple)(s)) ||
83
+ meta.aliases.some((d) =>
84
+ isTupleRecursive(visited)(tuple)(d.value),
85
+ ) ||
86
+ (meta.resolved !== null &&
87
+ isTupleRecursive(visited)(tuple)(meta.resolved)) ||
88
+ (meta.rest !== null && isTupleRecursive(visited)(tuple)(meta.rest))
89
+ );
90
+ };
91
+
92
+ const isObjectRecursive =
93
+ (visited: Set<Metadata>) =>
94
+ (obj: MetadataObject) =>
95
+ (meta: Metadata): boolean => {
96
+ if (visited.has(meta)) return false;
97
+
98
+ visited.add(meta);
99
+ return (
100
+ meta.objects.some(
101
+ (o) =>
102
+ obj === o ||
103
+ o.properties.some((prop) =>
104
+ isObjectRecursive(visited)(obj)(prop.value),
105
+ ),
106
+ ) ||
107
+ meta.aliases.some((alias) =>
108
+ isObjectRecursive(visited)(obj)(alias.value),
109
+ ) ||
110
+ meta.arrays.some(
111
+ (array) =>
112
+ !array.recursive &&
113
+ isObjectRecursive(visited)(obj)(array.value),
114
+ ) ||
115
+ meta.tuples.some(
116
+ (tuple) =>
117
+ !tuple.recursive &&
118
+ tuple.elements.some((elem) =>
119
+ isObjectRecursive(visited)(obj)(elem),
120
+ ),
121
+ ) ||
122
+ meta.maps.some((map) =>
123
+ isObjectRecursive(visited)(obj)(map.value),
124
+ ) ||
125
+ meta.sets.some((value) => isObjectRecursive(visited)(obj)(value)) ||
126
+ (meta.resolved !== null &&
127
+ isObjectRecursive(visited)(obj)(meta.resolved)) ||
128
+ (meta.rest !== null && isObjectRecursive(visited)(obj)(meta.rest))
129
+ );
130
+ };
@@ -1,30 +1,30 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataAlias } from "../../../metadata/MetadataAlias";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_definition } from "./emplace_metadata_definition";
11
-
12
- export const iterate_metadata_definition =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
17
- if (options.absorb !== false || type.aliasSymbol === undefined)
18
- return false;
19
-
20
- const node: ts.Declaration | undefined =
21
- type.aliasSymbol.declarations?.[0];
22
- if (node === undefined) return false;
23
-
24
- // CONSTRUCT DEFINITION
25
- const alias: MetadataAlias = emplace_metadata_definition(checker)(
26
- options,
27
- )(collection)(type, meta.nullable);
28
- ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
29
- return true;
30
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataAlias } from "../../../metadata/MetadataAlias";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_definition } from "./emplace_metadata_definition";
11
+
12
+ export const iterate_metadata_definition =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type): boolean => {
17
+ if (options.absorb !== false || type.aliasSymbol === undefined)
18
+ return false;
19
+
20
+ const node: ts.Declaration | undefined =
21
+ type.aliasSymbol.declarations?.[0];
22
+ if (node === undefined) return false;
23
+
24
+ // CONSTRUCT DEFINITION
25
+ const alias: MetadataAlias = emplace_metadata_definition(checker)(
26
+ options,
27
+ )(collection)(type, meta.nullable);
28
+ ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
29
+ return true;
30
+ };
@@ -1,49 +1,49 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataObject } from "../../../metadata/MetadataObject";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_object } from "./emplace_metadata_object";
11
- import { iterate_metadata } from "./iterate_metadata";
12
-
13
- export const iterate_metadata_object =
14
- (checker: ts.TypeChecker) =>
15
- (options: MetadataFactory.IOptions) =>
16
- (collection: MetadataCollection) =>
17
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
18
- const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
- if (
20
- !filter(ts.TypeFlags.Object) &&
21
- !type.isIntersection() &&
22
- (type as any).intrinsicName !== "object"
23
- )
24
- return false;
25
- else if (type.isIntersection()) {
26
- const fakeCollection = new MetadataCollection();
27
- const fakeSchema: Metadata = Metadata.initialize();
28
-
29
- type.types.forEach((t) =>
30
- iterate_metadata(checker)(options)(fakeCollection)(
31
- fakeSchema,
32
- t,
33
- parentResolved,
34
- false,
35
- ),
36
- );
37
- if (
38
- fakeSchema.objects.length === 0 ||
39
- fakeSchema.objects.length !== fakeSchema.size()
40
- )
41
- return true;
42
- }
43
-
44
- const obj: MetadataObject = emplace_metadata_object(checker)(options)(
45
- collection,
46
- )(type, meta.nullable);
47
- ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
48
- return true;
49
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataObject } from "../../../metadata/MetadataObject";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_object } from "./emplace_metadata_object";
11
+ import { iterate_metadata } from "./iterate_metadata";
12
+
13
+ export const iterate_metadata_object =
14
+ (checker: ts.TypeChecker) =>
15
+ (options: MetadataFactory.IOptions) =>
16
+ (collection: MetadataCollection) =>
17
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
18
+ const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
+ if (
20
+ !filter(ts.TypeFlags.Object) &&
21
+ !type.isIntersection() &&
22
+ (type as any).intrinsicName !== "object"
23
+ )
24
+ return false;
25
+ else if (type.isIntersection()) {
26
+ const fakeCollection = new MetadataCollection();
27
+ const fakeSchema: Metadata = Metadata.initialize();
28
+
29
+ type.types.forEach((t) =>
30
+ iterate_metadata(checker)(options)(fakeCollection)(
31
+ fakeSchema,
32
+ t,
33
+ parentResolved,
34
+ false,
35
+ ),
36
+ );
37
+ if (
38
+ fakeSchema.objects.length === 0 ||
39
+ fakeSchema.objects.length !== fakeSchema.size()
40
+ )
41
+ return true;
42
+ }
43
+
44
+ const obj: MetadataObject = emplace_metadata_object(checker)(options)(
45
+ collection,
46
+ )(type, meta.nullable);
47
+ ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
48
+ return true;
49
+ };