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,34 +1,34 @@
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 { explore_metadata } from "./explore_metadata";
11
-
12
- export const emplace_metadata_array =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (type: ts.Type, nullable: boolean): MetadataArray => {
17
- // CHECK EXISTENCE
18
- const [array, newbie, setValue] = collection.emplaceArray(
19
- checker,
20
- type,
21
- );
22
- ArrayUtil.add(array.nullables, nullable);
23
- if (newbie === false) return array;
24
-
25
- // CONSTRUCT VALUE TYPE
26
- const value: Metadata = explore_metadata(checker)(options)(collection)(
27
- type.getNumberIndexType()!,
28
- false,
29
- false,
30
- );
31
- setValue(value);
32
-
33
- return array;
34
- };
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 { explore_metadata } from "./explore_metadata";
11
+
12
+ export const emplace_metadata_array =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (type: ts.Type, nullable: boolean): MetadataArray => {
17
+ // CHECK EXISTENCE
18
+ const [array, newbie, setValue] = collection.emplaceArray(
19
+ checker,
20
+ type,
21
+ );
22
+ ArrayUtil.add(array.nullables, nullable);
23
+ if (newbie === false) return array;
24
+
25
+ // CONSTRUCT VALUE TYPE
26
+ const value: Metadata = explore_metadata(checker)(options)(collection)(
27
+ type.getNumberIndexType()!,
28
+ false,
29
+ false,
30
+ );
31
+ setValue(value);
32
+
33
+ return array;
34
+ };
@@ -1,35 +1,35 @@
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 { explore_metadata } from "./explore_metadata";
11
-
12
- export const emplace_metadata_definition =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (type: ts.Type, nullable: boolean): MetadataAlias => {
17
- // CHECK EXISTENCE
18
- const [alias, newbie, closure] = collection.emplaceAlias(
19
- checker,
20
- type,
21
- type.aliasSymbol!,
22
- );
23
- ArrayUtil.add(alias.nullables, nullable);
24
- if (newbie === false) return alias;
25
-
26
- // CONSTRUCT VALUE TYPE
27
- const value: Metadata = explore_metadata(checker)(options)(collection)(
28
- type,
29
- false,
30
- true,
31
- );
32
- closure(value);
33
-
34
- return alias;
35
- };
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 { explore_metadata } from "./explore_metadata";
11
+
12
+ export const emplace_metadata_definition =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (type: ts.Type, nullable: boolean): MetadataAlias => {
17
+ // CHECK EXISTENCE
18
+ const [alias, newbie, closure] = collection.emplaceAlias(
19
+ checker,
20
+ type,
21
+ type.aliasSymbol!,
22
+ );
23
+ ArrayUtil.add(alias.nullables, nullable);
24
+ if (newbie === false) return alias;
25
+
26
+ // CONSTRUCT VALUE TYPE
27
+ const value: Metadata = explore_metadata(checker)(options)(collection)(
28
+ type,
29
+ false,
30
+ true,
31
+ );
32
+ closure(value);
33
+
34
+ return alias;
35
+ };
@@ -1,142 +1,142 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataObject } from "../../../metadata/MetadataObject";
5
- import { MetadataProperty } from "../../../metadata/MetadataProperty";
6
-
7
- import { Writable } from "../../../typings/Writable";
8
-
9
- import { ArrayUtil } from "../../../utils/ArrayUtil";
10
-
11
- import { CommentFactory } from "../../CommentFactory";
12
- import { MetadataCollection } from "../../MetadataCollection";
13
- import { MetadataFactory } from "../../MetadataFactory";
14
- import { MetadataTagFactory } from "../../MetadataTagFactory";
15
- import { MetadataHelper } from "./MetadataHelper";
16
- import { explore_metadata } from "./explore_metadata";
17
-
18
- export const emplace_metadata_object =
19
- (checker: ts.TypeChecker) =>
20
- (options: MetadataFactory.IOptions) =>
21
- (collection: MetadataCollection) =>
22
- (parent: ts.Type, nullable: boolean): MetadataObject => {
23
- // EMPLACE OBJECT
24
- const [obj, newbie] = collection.emplace(checker, parent);
25
- ArrayUtil.add(obj.nullables, nullable, (elem) => elem === nullable);
26
-
27
- if (newbie === false) return obj;
28
-
29
- // PREPARE ASSETS
30
- const isClass: boolean = parent.isClass();
31
- const pred: (node: ts.Declaration) => boolean = isClass
32
- ? (node) => {
33
- const kind: ts.SyntaxKind | undefined = node
34
- .getChildren()[0]
35
- ?.getChildren()[0]?.kind;
36
- return (
37
- kind !== ts.SyntaxKind.PrivateKeyword &&
38
- kind !== ts.SyntaxKind.ProtectedKeyword &&
39
- (ts.isParameter(node) || isProperty(node))
40
- );
41
- }
42
- : (node) => isProperty(node);
43
-
44
- const insert =
45
- (key: Metadata) =>
46
- (value: Metadata) =>
47
- (identifier: () => string) =>
48
- (
49
- symbol: ts.Symbol | undefined,
50
- filter?: (doc: ts.JSDocTagInfo) => boolean,
51
- ): MetadataProperty => {
52
- // COMMENTS AND TAGS
53
- const description: string | null = symbol
54
- ? CommentFactory.description(symbol) ?? null
55
- : null;
56
- const jsDocTags: ts.JSDocTagInfo[] = (
57
- symbol?.getJsDocTags() ?? []
58
- ).filter(filter ?? (() => true));
59
-
60
- // THE PROPERTY
61
- const property = MetadataProperty.create({
62
- key,
63
- value,
64
- description,
65
- jsDocTags,
66
- tags: MetadataTagFactory.generate(value)(jsDocTags)(() =>
67
- identifier(),
68
- ),
69
- });
70
- obj.properties.push(property);
71
- return property;
72
- };
73
-
74
- //----
75
- // REGULAR PROPERTIES
76
- //----
77
- for (const prop of parent.getApparentProperties()) {
78
- // CHECK INTERNAL TAG
79
- if (
80
- (prop.getJsDocTags(checker) ?? []).find(
81
- (tag) => tag.name === "internal",
82
- ) !== undefined
83
- )
84
- continue;
85
-
86
- // CHECK NODE IS A FORMAL PROPERTY
87
- const [node, type] = (() => {
88
- const node = (prop.getDeclarations() ?? [])[0] as
89
- | ts.PropertyDeclaration
90
- | undefined;
91
- const type: ts.Type | undefined = node
92
- ? checker.getTypeOfSymbolAtLocation(prop, node)
93
- : "getTypeOfPropertyOfType" in checker
94
- ? (checker as any).getTypeOfPropertyOfType(
95
- parent,
96
- prop.name,
97
- )
98
- : undefined;
99
- return [node, type];
100
- })();
101
- if ((node && pred(node) === false) || type === undefined) continue;
102
-
103
- // GET EXACT TYPE
104
- const key: Metadata = MetadataHelper.literal_to_metadata(prop.name);
105
- const value: Metadata = explore_metadata(checker)(options)(
106
- collection,
107
- )(type, false);
108
-
109
- // INSERT WITH REQUIRED CONFIGURATION
110
- if (node?.questionToken) {
111
- Writable(value).required = false;
112
- Writable(value).optional = true;
113
- }
114
- insert(key)(value)(() => `${obj.name}.${prop.name}`)(prop);
115
- }
116
-
117
- //----
118
- // DYNAMIC PROPERTIES
119
- //----
120
- for (const index of checker.getIndexInfosOfType(parent)) {
121
- // GET EXACT TYPE
122
- const analyzer = (type: ts.Type) =>
123
- explore_metadata(checker)(options)(collection)(type, false);
124
- const key: Metadata = analyzer(index.keyType);
125
- const value: Metadata = analyzer(index.type);
126
-
127
- // INSERT WITH REQUIRED CONFIGURATION
128
- insert(key)(value)(() => `${obj.name}[${key.getName()}]`)(
129
- index.declaration?.parent
130
- ? checker.getSymbolAtLocation(index.declaration.parent)
131
- : undefined,
132
- (doc) => doc.name !== "default",
133
- );
134
- }
135
- return obj;
136
- };
137
-
138
- const isProperty = (node: ts.Declaration) =>
139
- ts.isPropertyDeclaration(node) ||
140
- ts.isPropertyAssignment(node) ||
141
- ts.isPropertySignature(node) ||
142
- ts.isTypeLiteralNode(node);
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataObject } from "../../../metadata/MetadataObject";
5
+ import { MetadataProperty } from "../../../metadata/MetadataProperty";
6
+
7
+ import { Writable } from "../../../typings/Writable";
8
+
9
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
10
+
11
+ import { CommentFactory } from "../../CommentFactory";
12
+ import { MetadataCollection } from "../../MetadataCollection";
13
+ import { MetadataFactory } from "../../MetadataFactory";
14
+ import { MetadataTagFactory } from "../../MetadataTagFactory";
15
+ import { MetadataHelper } from "./MetadataHelper";
16
+ import { explore_metadata } from "./explore_metadata";
17
+
18
+ export const emplace_metadata_object =
19
+ (checker: ts.TypeChecker) =>
20
+ (options: MetadataFactory.IOptions) =>
21
+ (collection: MetadataCollection) =>
22
+ (parent: ts.Type, nullable: boolean): MetadataObject => {
23
+ // EMPLACE OBJECT
24
+ const [obj, newbie] = collection.emplace(checker, parent);
25
+ ArrayUtil.add(obj.nullables, nullable, (elem) => elem === nullable);
26
+
27
+ if (newbie === false) return obj;
28
+
29
+ // PREPARE ASSETS
30
+ const isClass: boolean = parent.isClass();
31
+ const pred: (node: ts.Declaration) => boolean = isClass
32
+ ? (node) => {
33
+ const kind: ts.SyntaxKind | undefined = node
34
+ .getChildren()[0]
35
+ ?.getChildren()[0]?.kind;
36
+ return (
37
+ kind !== ts.SyntaxKind.PrivateKeyword &&
38
+ kind !== ts.SyntaxKind.ProtectedKeyword &&
39
+ (ts.isParameter(node) || isProperty(node))
40
+ );
41
+ }
42
+ : (node) => isProperty(node);
43
+
44
+ const insert =
45
+ (key: Metadata) =>
46
+ (value: Metadata) =>
47
+ (identifier: () => string) =>
48
+ (
49
+ symbol: ts.Symbol | undefined,
50
+ filter?: (doc: ts.JSDocTagInfo) => boolean,
51
+ ): MetadataProperty => {
52
+ // COMMENTS AND TAGS
53
+ const description: string | null = symbol
54
+ ? CommentFactory.description(symbol) ?? null
55
+ : null;
56
+ const jsDocTags: ts.JSDocTagInfo[] = (
57
+ symbol?.getJsDocTags() ?? []
58
+ ).filter(filter ?? (() => true));
59
+
60
+ // THE PROPERTY
61
+ const property = MetadataProperty.create({
62
+ key,
63
+ value,
64
+ description,
65
+ jsDocTags,
66
+ tags: MetadataTagFactory.generate(value)(jsDocTags)(() =>
67
+ identifier(),
68
+ ),
69
+ });
70
+ obj.properties.push(property);
71
+ return property;
72
+ };
73
+
74
+ //----
75
+ // REGULAR PROPERTIES
76
+ //----
77
+ for (const prop of parent.getApparentProperties()) {
78
+ // CHECK INTERNAL TAG
79
+ if (
80
+ (prop.getJsDocTags(checker) ?? []).find(
81
+ (tag) => tag.name === "internal",
82
+ ) !== undefined
83
+ )
84
+ continue;
85
+
86
+ // CHECK NODE IS A FORMAL PROPERTY
87
+ const [node, type] = (() => {
88
+ const node = (prop.getDeclarations() ?? [])[0] as
89
+ | ts.PropertyDeclaration
90
+ | undefined;
91
+ const type: ts.Type | undefined = node
92
+ ? checker.getTypeOfSymbolAtLocation(prop, node)
93
+ : "getTypeOfPropertyOfType" in checker
94
+ ? (checker as any).getTypeOfPropertyOfType(
95
+ parent,
96
+ prop.name,
97
+ )
98
+ : undefined;
99
+ return [node, type];
100
+ })();
101
+ if ((node && pred(node) === false) || type === undefined) continue;
102
+
103
+ // GET EXACT TYPE
104
+ const key: Metadata = MetadataHelper.literal_to_metadata(prop.name);
105
+ const value: Metadata = explore_metadata(checker)(options)(
106
+ collection,
107
+ )(type, false);
108
+
109
+ // INSERT WITH REQUIRED CONFIGURATION
110
+ if (node?.questionToken) {
111
+ Writable(value).required = false;
112
+ Writable(value).optional = true;
113
+ }
114
+ insert(key)(value)(() => `${obj.name}.${prop.name}`)(prop);
115
+ }
116
+
117
+ //----
118
+ // DYNAMIC PROPERTIES
119
+ //----
120
+ for (const index of checker.getIndexInfosOfType(parent)) {
121
+ // GET EXACT TYPE
122
+ const analyzer = (type: ts.Type) =>
123
+ explore_metadata(checker)(options)(collection)(type, false);
124
+ const key: Metadata = analyzer(index.keyType);
125
+ const value: Metadata = analyzer(index.type);
126
+
127
+ // INSERT WITH REQUIRED CONFIGURATION
128
+ insert(key)(value)(() => `${obj.name}[${key.getName()}]`)(
129
+ index.declaration?.parent
130
+ ? checker.getSymbolAtLocation(index.declaration.parent)
131
+ : undefined,
132
+ (doc) => doc.name !== "default",
133
+ );
134
+ }
135
+ return obj;
136
+ };
137
+
138
+ const isProperty = (node: ts.Declaration) =>
139
+ ts.isPropertyDeclaration(node) ||
140
+ ts.isPropertyAssignment(node) ||
141
+ ts.isPropertySignature(node) ||
142
+ ts.isTypeLiteralNode(node);
@@ -1,50 +1,50 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
-
6
- import { Writable } from "../../../typings/Writable";
7
-
8
- import { ArrayUtil } from "../../../utils/ArrayUtil";
9
-
10
- import { MetadataCollection } from "../../MetadataCollection";
11
- import { MetadataFactory } from "../../MetadataFactory";
12
- import { explore_metadata } from "./explore_metadata";
13
-
14
- export const emplace_metadata_tuple =
15
- (checker: ts.TypeChecker) =>
16
- (options: MetadataFactory.IOptions) =>
17
- (collection: MetadataCollection) =>
18
- (type: ts.TupleType, nullable: boolean): MetadataTuple => {
19
- // CHECK EXISTENCE
20
- const [tuple, newbie, closure] = collection.emplaceTuple(checker, type);
21
- ArrayUtil.add(tuple.nullables, nullable);
22
- if (newbie === false) return tuple;
23
-
24
- // CONSTRUCT ELEMENT TYPES
25
- const flagList: readonly ts.ElementFlags[] =
26
- type.elementFlags ??
27
- (type.target as ts.TupleType)?.elementFlags ??
28
- [];
29
- const elements: Metadata[] = checker
30
- .getTypeArguments(type as ts.TypeReference)
31
- .map((elem, i) => {
32
- const child: Metadata = explore_metadata(checker)(options)(
33
- collection,
34
- )(elem, false, false);
35
-
36
- // CHECK OPTIONAL
37
- const flag: ts.ElementFlags | undefined = flagList[i];
38
- if (flag === ts.ElementFlags.Optional)
39
- Writable(child).optional = true;
40
-
41
- // REST TYPE
42
- if (flag !== ts.ElementFlags.Rest) return child;
43
- const wrapper: Metadata = Metadata.initialize();
44
- Writable(wrapper).rest = child;
45
- return wrapper;
46
- });
47
- closure(elements);
48
-
49
- return tuple;
50
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
+
6
+ import { Writable } from "../../../typings/Writable";
7
+
8
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
9
+
10
+ import { MetadataCollection } from "../../MetadataCollection";
11
+ import { MetadataFactory } from "../../MetadataFactory";
12
+ import { explore_metadata } from "./explore_metadata";
13
+
14
+ export const emplace_metadata_tuple =
15
+ (checker: ts.TypeChecker) =>
16
+ (options: MetadataFactory.IOptions) =>
17
+ (collection: MetadataCollection) =>
18
+ (type: ts.TupleType, nullable: boolean): MetadataTuple => {
19
+ // CHECK EXISTENCE
20
+ const [tuple, newbie, closure] = collection.emplaceTuple(checker, type);
21
+ ArrayUtil.add(tuple.nullables, nullable);
22
+ if (newbie === false) return tuple;
23
+
24
+ // CONSTRUCT ELEMENT TYPES
25
+ const flagList: readonly ts.ElementFlags[] =
26
+ type.elementFlags ??
27
+ (type.target as ts.TupleType)?.elementFlags ??
28
+ [];
29
+ const elements: Metadata[] = checker
30
+ .getTypeArguments(type as ts.TypeReference)
31
+ .map((elem, i) => {
32
+ const child: Metadata = explore_metadata(checker)(options)(
33
+ collection,
34
+ )(elem, false, false);
35
+
36
+ // CHECK OPTIONAL
37
+ const flag: ts.ElementFlags | undefined = flagList[i];
38
+ if (flag === ts.ElementFlags.Optional)
39
+ Writable(child).optional = true;
40
+
41
+ // REST TYPE
42
+ if (flag !== ts.ElementFlags.Rest) return child;
43
+ const wrapper: Metadata = Metadata.initialize();
44
+ Writable(wrapper).rest = child;
45
+ return wrapper;
46
+ });
47
+ closure(elements);
48
+
49
+ return tuple;
50
+ };
@@ -1,66 +1,66 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { ArrayUtil } from "../../../utils/ArrayUtil";
6
-
7
- import { MetadataCollection } from "../../MetadataCollection";
8
- import { MetadataFactory } from "../../MetadataFactory";
9
- import { iterate_metadata } from "./iterate_metadata";
10
-
11
- export const explore_metadata =
12
- (checker: ts.TypeChecker) =>
13
- (options: MetadataFactory.IOptions) =>
14
- (collection: MetadataCollection) =>
15
- (
16
- type: ts.Type | null,
17
- parentResolved: boolean,
18
- aliased: boolean = false,
19
- ): Metadata => {
20
- // CONSTRUCT METADATA
21
- const meta: Metadata = Metadata.initialize(parentResolved);
22
- const out = (meta: Metadata) => {
23
- if (options.validate) options.validate(meta);
24
- return meta;
25
- };
26
- if (type === null) return out(meta);
27
-
28
- // ITERATE TYPESCRIPT TYPES
29
- iterate_metadata(checker)(options)(collection)(
30
- meta,
31
- type,
32
- parentResolved,
33
- aliased,
34
- );
35
-
36
- // EMEND ATOMICS
37
- for (const type of meta.atomics) {
38
- const index: number = meta.constants.findIndex(
39
- (c) => c.type === type,
40
- );
41
- if (index !== -1) meta.constants.splice(index, 1);
42
- }
43
-
44
- // EMEND BOOLEAN
45
- {
46
- const index: number = meta.constants.findIndex(
47
- (c) => c.type === "boolean",
48
- );
49
- if (index !== -1 && meta.constants[index]!.values.length === 2) {
50
- meta.constants.splice(index, 1);
51
- ArrayUtil.take(
52
- meta.atomics,
53
- (type) => type === "boolean",
54
- () => "boolean",
55
- );
56
- }
57
- }
58
-
59
- // EMEND TEMPLATE
60
- if (
61
- meta.templates.length &&
62
- meta.atomics.find((type) => type === "string") !== undefined
63
- )
64
- meta.templates.splice(0, meta.templates.length);
65
- return out(meta);
66
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+
7
+ import { MetadataCollection } from "../../MetadataCollection";
8
+ import { MetadataFactory } from "../../MetadataFactory";
9
+ import { iterate_metadata } from "./iterate_metadata";
10
+
11
+ export const explore_metadata =
12
+ (checker: ts.TypeChecker) =>
13
+ (options: MetadataFactory.IOptions) =>
14
+ (collection: MetadataCollection) =>
15
+ (
16
+ type: ts.Type | null,
17
+ parentResolved: boolean,
18
+ aliased: boolean = false,
19
+ ): Metadata => {
20
+ // CONSTRUCT METADATA
21
+ const meta: Metadata = Metadata.initialize(parentResolved);
22
+ const out = (meta: Metadata) => {
23
+ if (options.validate) options.validate(meta);
24
+ return meta;
25
+ };
26
+ if (type === null) return out(meta);
27
+
28
+ // ITERATE TYPESCRIPT TYPES
29
+ iterate_metadata(checker)(options)(collection)(
30
+ meta,
31
+ type,
32
+ parentResolved,
33
+ aliased,
34
+ );
35
+
36
+ // EMEND ATOMICS
37
+ for (const type of meta.atomics) {
38
+ const index: number = meta.constants.findIndex(
39
+ (c) => c.type === type,
40
+ );
41
+ if (index !== -1) meta.constants.splice(index, 1);
42
+ }
43
+
44
+ // EMEND BOOLEAN
45
+ {
46
+ const index: number = meta.constants.findIndex(
47
+ (c) => c.type === "boolean",
48
+ );
49
+ if (index !== -1 && meta.constants[index]!.values.length === 2) {
50
+ meta.constants.splice(index, 1);
51
+ ArrayUtil.take(
52
+ meta.atomics,
53
+ (type) => type === "boolean",
54
+ () => "boolean",
55
+ );
56
+ }
57
+ }
58
+
59
+ // EMEND TEMPLATE
60
+ if (
61
+ meta.templates.length &&
62
+ meta.atomics.find((type) => type === "string") !== undefined
63
+ )
64
+ meta.templates.splice(0, meta.templates.length);
65
+ return out(meta);
66
+ };