typia 7.0.0-dev.20241011 → 7.0.0-dev.20241012

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 (250) hide show
  1. package/lib/factories/MetadataCollection.d.ts +4 -4
  2. package/lib/factories/MetadataCollection.js +6 -4
  3. package/lib/factories/MetadataCollection.js.map +1 -1
  4. package/lib/factories/MetadataFactory.d.ts +2 -2
  5. package/lib/factories/MetadataFactory.js +8 -2
  6. package/lib/factories/MetadataFactory.js.map +1 -1
  7. package/lib/factories/MetadataTypeTagFactory.d.ts +2 -2
  8. package/lib/factories/MetadataTypeTagFactory.js +6 -6
  9. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  10. package/lib/factories/MetadataTypeTagSchemaFactory.d.ts +2 -2
  11. package/lib/factories/MetadataTypeTagSchemaFactory.js +1 -1
  12. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -1
  13. package/lib/factories/ProtobufFactory.js +12 -22
  14. package/lib/factories/ProtobufFactory.js.map +1 -1
  15. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +2 -2
  16. package/lib/factories/internal/metadata/iterate_metadata_collection.js +2 -1
  17. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -2
  19. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +5 -2
  20. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  21. package/lib/factories/internal/metadata/iterate_metadata_object.js +5 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_sort.js +6 -2
  24. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  25. package/lib/internal/$ProtobufSizer.js +1 -8
  26. package/lib/internal/$ProtobufSizer.js.map +1 -1
  27. package/lib/json.d.ts +1 -1
  28. package/lib/module.d.ts +1 -1
  29. package/lib/module.js +1 -1
  30. package/lib/module.js.map +1 -1
  31. package/lib/programmers/CheckerProgrammer.d.ts +2 -2
  32. package/lib/programmers/CheckerProgrammer.js +5 -3
  33. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  34. package/lib/programmers/FeatureProgrammer.d.ts +5 -5
  35. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  36. package/lib/programmers/IsProgrammer.d.ts +2 -2
  37. package/lib/programmers/RandomProgrammer.js +1 -1
  38. package/lib/programmers/RandomProgrammer.js.map +1 -1
  39. package/lib/programmers/helpers/ProtobufUtil.d.ts +2 -2
  40. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  41. package/lib/programmers/helpers/PruneJoiner.d.ts +2 -2
  42. package/lib/programmers/helpers/RandomJoiner.d.ts +2 -2
  43. package/lib/programmers/helpers/UnionExplorer.d.ts +3 -3
  44. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  45. package/lib/programmers/helpers/UnionPredicator.d.ts +3 -3
  46. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  47. package/lib/programmers/http/HttpFormDataProgrammer.js +1 -1
  48. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  49. package/lib/programmers/http/HttpHeadersProgrammer.js +1 -1
  50. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  51. package/lib/programmers/http/HttpQueryProgrammer.js +2 -2
  52. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  53. package/lib/programmers/internal/application_union_discriminator.js +2 -2
  54. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  55. package/lib/programmers/internal/application_v30_alias.js +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  57. package/lib/programmers/internal/application_v30_schema.js +1 -1
  58. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  59. package/lib/programmers/internal/application_v31_alias.js +1 -1
  60. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  61. package/lib/programmers/internal/application_v31_schema.js +1 -1
  62. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  63. package/lib/programmers/internal/llm_schema_object.js +1 -1
  64. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  65. package/lib/programmers/internal/llm_schema_station.js +2 -2
  66. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  67. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  68. package/lib/programmers/json/JsonApplicationProgrammer.js +6 -5
  69. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  70. package/lib/programmers/json/JsonSchemasProgrammer.d.ts +1 -1
  71. package/lib/programmers/json/JsonStringifyProgrammer.js +3 -3
  72. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  73. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -6
  74. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  75. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -1
  76. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  77. package/lib/programmers/misc/MiscCloneProgrammer.js +1 -1
  78. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  79. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  80. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  81. package/lib/programmers/notations/NotationGeneralProgrammer.js +1 -1
  82. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  83. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +6 -6
  84. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  85. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
  86. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  87. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +3 -3
  88. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  89. package/lib/schemas/json/IJsonSchemaCollection.js +3 -0
  90. package/lib/schemas/json/IJsonSchemaCollection.js.map +1 -0
  91. package/lib/schemas/metadata/IMetadata.d.ts +4 -1
  92. package/lib/schemas/metadata/IMetadataArray.d.ts +1 -2
  93. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  94. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  95. package/lib/schemas/metadata/IMetadataObject.d.ts +2 -8
  96. package/lib/schemas/metadata/IMetadataObjectType.d.ts +11 -0
  97. package/lib/schemas/{json/IJsonSchemaList.js → metadata/IMetadataObjectType.js} +1 -1
  98. package/lib/schemas/metadata/IMetadataObjectType.js.map +1 -0
  99. package/lib/schemas/metadata/IMetadataTuple.d.ts +1 -2
  100. package/lib/schemas/metadata/Metadata.js +14 -15
  101. package/lib/schemas/metadata/Metadata.js.map +1 -1
  102. package/lib/schemas/metadata/MetadataArray.js +1 -1
  103. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  104. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  105. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  106. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  107. package/lib/schemas/metadata/MetadataObject.d.ts +8 -12
  108. package/lib/schemas/metadata/MetadataObject.js +44 -82
  109. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  110. package/lib/schemas/metadata/MetadataObjectType.d.ts +20 -0
  111. package/lib/schemas/metadata/MetadataObjectType.js +106 -0
  112. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -0
  113. package/lib/schemas/metadata/MetadataTuple.js +1 -1
  114. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  115. package/lib/transformers/TransformerError.js.map +1 -1
  116. package/package.json +2 -2
  117. package/src/executable/TypiaGenerateWizard.ts +83 -83
  118. package/src/executable/TypiaSetupWizard.ts +174 -174
  119. package/src/executable/setup/ArgumentParser.ts +42 -42
  120. package/src/executable/setup/FileRetriever.ts +19 -19
  121. package/src/executable/setup/PackageManager.ts +87 -87
  122. package/src/factories/IdentifierFactory.ts +89 -89
  123. package/src/factories/MetadataCollection.ts +280 -278
  124. package/src/factories/MetadataFactory.ts +11 -5
  125. package/src/factories/MetadataTypeTagFactory.ts +386 -385
  126. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  127. package/src/factories/NumericRangeFactory.ts +72 -72
  128. package/src/factories/ProtobufFactory.ts +14 -28
  129. package/src/factories/StatementFactory.ts +90 -90
  130. package/src/factories/TemplateFactory.ts +64 -64
  131. package/src/factories/TypeFactory.ts +140 -140
  132. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  133. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  134. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -2
  135. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  136. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  137. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  138. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  139. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  140. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  141. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  142. package/src/factories/internal/metadata/iterate_metadata_collection.ts +4 -3
  143. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +2 -2
  144. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  145. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  146. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +219 -216
  147. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  148. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  149. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -27
  150. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  151. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -83
  152. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  153. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  154. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  155. package/src/internal/$ProtobufSizer.ts +1 -7
  156. package/src/json.ts +1 -1
  157. package/src/module.ts +1 -1
  158. package/src/programmers/CheckerProgrammer.ts +7 -5
  159. package/src/programmers/FeatureProgrammer.ts +9 -6
  160. package/src/programmers/IsProgrammer.ts +2 -2
  161. package/src/programmers/RandomProgrammer.ts +3 -3
  162. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  163. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  164. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  165. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  166. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  167. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  168. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  169. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  170. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  171. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  172. package/src/programmers/helpers/RandomJoiner.ts +2 -2
  173. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  174. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  175. package/src/programmers/helpers/UnionPredicator.ts +79 -77
  176. package/src/programmers/http/HttpFormDataProgrammer.ts +3 -3
  177. package/src/programmers/http/HttpHeadersProgrammer.ts +3 -3
  178. package/src/programmers/http/HttpQueryProgrammer.ts +4 -4
  179. package/src/programmers/internal/application_array.ts +56 -56
  180. package/src/programmers/internal/application_bigint.ts +25 -25
  181. package/src/programmers/internal/application_boolean.ts +25 -25
  182. package/src/programmers/internal/application_escaped.ts +96 -96
  183. package/src/programmers/internal/application_number.ts +25 -25
  184. package/src/programmers/internal/application_plugin.ts +19 -19
  185. package/src/programmers/internal/application_string.ts +25 -25
  186. package/src/programmers/internal/application_templates.ts +64 -64
  187. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  188. package/src/programmers/internal/application_v30_alias.ts +59 -59
  189. package/src/programmers/internal/application_v30_native.ts +29 -29
  190. package/src/programmers/internal/application_v30_object.ts +165 -165
  191. package/src/programmers/internal/application_v30_schema.ts +220 -220
  192. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  193. package/src/programmers/internal/application_v31_alias.ts +47 -47
  194. package/src/programmers/internal/application_v31_constant.ts +29 -29
  195. package/src/programmers/internal/application_v31_native.ts +25 -25
  196. package/src/programmers/internal/application_v31_object.ts +147 -147
  197. package/src/programmers/internal/application_v31_schema.ts +215 -215
  198. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  199. package/src/programmers/internal/check_array_length.ts +46 -46
  200. package/src/programmers/internal/check_bigint.ts +49 -49
  201. package/src/programmers/internal/check_everything.ts +23 -23
  202. package/src/programmers/internal/check_native.ts +27 -27
  203. package/src/programmers/internal/check_number.ts +111 -111
  204. package/src/programmers/internal/check_string.ts +49 -49
  205. package/src/programmers/internal/check_template.ts +48 -48
  206. package/src/programmers/internal/check_union_array_like.ts +334 -334
  207. package/src/programmers/internal/decode_union_object.ts +116 -116
  208. package/src/programmers/internal/feature_object_entries.ts +2 -2
  209. package/src/programmers/internal/llm_schema_array.ts +22 -22
  210. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  211. package/src/programmers/internal/llm_schema_object.ts +132 -132
  212. package/src/programmers/internal/llm_schema_station.ts +190 -190
  213. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  214. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  215. package/src/programmers/internal/prune_object_properties.ts +2 -2
  216. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  217. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  218. package/src/programmers/internal/template_to_pattern.ts +23 -23
  219. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  220. package/src/programmers/json/JsonApplicationProgrammer.ts +3 -3
  221. package/src/programmers/json/JsonSchemasProgrammer.ts +1 -1
  222. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  223. package/src/programmers/llm/LlmApplicationProgrammer.ts +4 -4
  224. package/src/programmers/llm/LlmSchemaProgrammer.ts +1 -1
  225. package/src/programmers/misc/MiscCloneProgrammer.ts +3 -3
  226. package/src/programmers/misc/MiscPruneProgrammer.ts +3 -3
  227. package/src/programmers/notations/NotationGeneralProgrammer.ts +3 -3
  228. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +11 -11
  229. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +8 -8
  230. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  231. package/src/schemas/json/{IJsonSchemaList.ts → IJsonSchemaCollection.ts} +22 -22
  232. package/src/schemas/metadata/IMetadata.ts +4 -1
  233. package/src/schemas/metadata/IMetadataArray.ts +1 -2
  234. package/src/schemas/metadata/IMetadataComponents.ts +2 -2
  235. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  236. package/src/schemas/metadata/IMetadataObject.ts +6 -13
  237. package/src/schemas/metadata/IMetadataObjectType.ts +13 -0
  238. package/src/schemas/metadata/IMetadataTuple.ts +1 -2
  239. package/src/schemas/metadata/Metadata.ts +616 -616
  240. package/src/schemas/metadata/MetadataArray.ts +1 -1
  241. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  242. package/src/schemas/metadata/MetadataObject.ts +48 -139
  243. package/src/schemas/metadata/MetadataObjectType.ts +149 -0
  244. package/src/schemas/metadata/MetadataTuple.ts +1 -1
  245. package/src/transformers/TransformerError.ts +8 -7
  246. package/src/transformers/features/json/JsonSchemasTransformer.ts +1 -1
  247. package/src/utils/MapUtil.ts +14 -14
  248. package/src/utils/NameEncoder.ts +32 -32
  249. package/lib/schemas/json/IJsonSchemaList.js.map +0 -1
  250. /package/lib/schemas/json/{IJsonSchemaList.d.ts → IJsonSchemaCollection.d.ts} +0 -0
@@ -1,56 +1,56 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
-
6
- import { Writable } from "../../../typings/Writable";
7
-
8
- import { ArrayUtil } from "../../../utils/ArrayUtil";
9
-
10
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
11
- import { explore_metadata } from "./explore_metadata";
12
-
13
- export const emplace_metadata_tuple = (
14
- props: IMetadataIteratorProps<ts.TupleType>,
15
- ): MetadataTupleType => {
16
- // CHECK EXISTENCE
17
- const [tuple, newbie, closure] = props.collection.emplaceTuple(
18
- props.checker,
19
- props.type,
20
- );
21
- ArrayUtil.add(tuple.nullables, props.metadata.nullable);
22
- if (newbie === false) return tuple;
23
-
24
- // CONSTRUCT ELEMENT TYPES
25
- const flagList: readonly ts.ElementFlags[] =
26
- props.type.elementFlags ??
27
- (props.type.target as ts.TupleType)?.elementFlags ??
28
- [];
29
- const elements: Metadata[] = props.checker
30
- .getTypeArguments(props.type as ts.TypeReference)
31
- .map((elem, i) => {
32
- const child: Metadata = explore_metadata({
33
- ...props,
34
- type: elem,
35
- explore: {
36
- ...props.explore,
37
- nested: tuple,
38
- aliased: false,
39
- escaped: false,
40
- },
41
- });
42
-
43
- // CHECK OPTIONAL
44
- const flag: ts.ElementFlags | undefined = flagList[i];
45
- if (flag === ts.ElementFlags.Optional) Writable(child).optional = true;
46
-
47
- // REST TYPE
48
- if (flag !== ts.ElementFlags.Rest) return child;
49
- const wrapper: Metadata = Metadata.initialize();
50
- Writable(wrapper).rest = child;
51
- return wrapper;
52
- });
53
- closure(elements);
54
-
55
- return tuple;
56
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+ import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
+
6
+ import { Writable } from "../../../typings/Writable";
7
+
8
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
9
+
10
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
11
+ import { explore_metadata } from "./explore_metadata";
12
+
13
+ export const emplace_metadata_tuple = (
14
+ props: IMetadataIteratorProps<ts.TupleType>,
15
+ ): MetadataTupleType => {
16
+ // CHECK EXISTENCE
17
+ const [tuple, newbie, closure] = props.collection.emplaceTuple(
18
+ props.checker,
19
+ props.type,
20
+ );
21
+ ArrayUtil.add(tuple.nullables, props.metadata.nullable);
22
+ if (newbie === false) return tuple;
23
+
24
+ // CONSTRUCT ELEMENT TYPES
25
+ const flagList: readonly ts.ElementFlags[] =
26
+ props.type.elementFlags ??
27
+ (props.type.target as ts.TupleType)?.elementFlags ??
28
+ [];
29
+ const elements: Metadata[] = props.checker
30
+ .getTypeArguments(props.type as ts.TypeReference)
31
+ .map((elem, i) => {
32
+ const child: Metadata = explore_metadata({
33
+ ...props,
34
+ type: elem,
35
+ explore: {
36
+ ...props.explore,
37
+ nested: tuple,
38
+ aliased: false,
39
+ escaped: false,
40
+ },
41
+ });
42
+
43
+ // CHECK OPTIONAL
44
+ const flag: ts.ElementFlags | undefined = flagList[i];
45
+ if (flag === ts.ElementFlags.Optional) Writable(child).optional = true;
46
+
47
+ // REST TYPE
48
+ if (flag !== ts.ElementFlags.Rest) return child;
49
+ const wrapper: Metadata = Metadata.initialize();
50
+ Writable(wrapper).rest = child;
51
+ return wrapper;
52
+ });
53
+ closure(elements);
54
+
55
+ return tuple;
56
+ };
@@ -1,30 +1,30 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
-
5
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
6
- import { emend_metadata_atomics } from "./emend_metadata_atomics";
7
- import { iterate_metadata } from "./iterate_metadata";
8
-
9
- export const explore_metadata = (props: IProps): Metadata => {
10
- // CONSTRUCT METADATA
11
- const metadata: Metadata = Metadata.initialize(props.explore.escaped);
12
- if (props.type === null) return metadata;
13
-
14
- // ITERATE TYPESCRIPT TYPES
15
- iterate_metadata({
16
- ...props,
17
- metadata,
18
- type: props.type,
19
- });
20
- emend_metadata_atomics(metadata);
21
- if (metadata.escaped) {
22
- emend_metadata_atomics(metadata.escaped.original);
23
- emend_metadata_atomics(metadata.escaped.returns);
24
- }
25
- return metadata;
26
- };
27
-
28
- interface IProps extends Omit<IMetadataIteratorProps, "metadata" | "type"> {
29
- type: ts.Type | null;
30
- }
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+
5
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
6
+ import { emend_metadata_atomics } from "./emend_metadata_atomics";
7
+ import { iterate_metadata } from "./iterate_metadata";
8
+
9
+ export const explore_metadata = (props: IProps): Metadata => {
10
+ // CONSTRUCT METADATA
11
+ const metadata: Metadata = Metadata.initialize(props.explore.escaped);
12
+ if (props.type === null) return metadata;
13
+
14
+ // ITERATE TYPESCRIPT TYPES
15
+ iterate_metadata({
16
+ ...props,
17
+ metadata,
18
+ type: props.type,
19
+ });
20
+ emend_metadata_atomics(metadata);
21
+ if (metadata.escaped) {
22
+ emend_metadata_atomics(metadata.escaped.original);
23
+ emend_metadata_atomics(metadata.escaped.returns);
24
+ }
25
+ return metadata;
26
+ };
27
+
28
+ interface IProps extends Omit<IMetadataIteratorProps, "metadata" | "type"> {
29
+ type: ts.Type | null;
30
+ }
@@ -1,54 +1,54 @@
1
- import ts from "typescript";
2
-
3
- import { TypeFactory } from "../../TypeFactory";
4
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
5
- import { iterate_metadata_alias } from "./iterate_metadata_alias";
6
- import { iterate_metadata_array } from "./iterate_metadata_array";
7
- import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
8
- import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
9
- import { iterate_metadata_constant } from "./iterate_metadata_constant";
10
- import { iterate_metadata_escape } from "./iterate_metadata_escape";
11
- import { iterate_metadata_function } from "./iterate_metadata_function";
12
- import { iterate_metadata_intersection } from "./iterate_metadata_intersection";
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_set } from "./iterate_metadata_set";
17
- import { iterate_metadata_template } from "./iterate_metadata_template";
18
- import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
19
- import { iterate_metadata_union } from "./iterate_metadata_union";
20
-
21
- export const iterate_metadata = (props: IMetadataIteratorProps): void => {
22
- if (props.type.isTypeParameter() === true) {
23
- props.errors.push({
24
- name: TypeFactory.getFullName({
25
- checker: props.checker,
26
- type: props.type,
27
- }),
28
- explore: { ...props.explore },
29
- messages: ["non-specified generic argument found."],
30
- });
31
- return;
32
- }
33
- // CHECK SPECIAL CASES
34
- else if (
35
- (props.explore.aliased !== true && iterate_metadata_alias(props)) ||
36
- iterate_metadata_intersection(props) ||
37
- iterate_metadata_union(props) ||
38
- iterate_metadata_escape(props)
39
- )
40
- return;
41
-
42
- // ITERATE CASES
43
- iterate_metadata_coalesce(props) ||
44
- iterate_metadata_function(props) ||
45
- iterate_metadata_constant(props) ||
46
- iterate_metadata_template(props) ||
47
- iterate_metadata_atomic(props) ||
48
- iterate_metadata_tuple(props as IMetadataIteratorProps<ts.TupleType>) ||
49
- iterate_metadata_array(props) ||
50
- iterate_metadata_native(props) ||
51
- iterate_metadata_map(props) ||
52
- iterate_metadata_set(props) ||
53
- iterate_metadata_object(props);
54
- };
1
+ import ts from "typescript";
2
+
3
+ import { TypeFactory } from "../../TypeFactory";
4
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
5
+ import { iterate_metadata_alias } from "./iterate_metadata_alias";
6
+ import { iterate_metadata_array } from "./iterate_metadata_array";
7
+ import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
8
+ import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
9
+ import { iterate_metadata_constant } from "./iterate_metadata_constant";
10
+ import { iterate_metadata_escape } from "./iterate_metadata_escape";
11
+ import { iterate_metadata_function } from "./iterate_metadata_function";
12
+ import { iterate_metadata_intersection } from "./iterate_metadata_intersection";
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_set } from "./iterate_metadata_set";
17
+ import { iterate_metadata_template } from "./iterate_metadata_template";
18
+ import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
19
+ import { iterate_metadata_union } from "./iterate_metadata_union";
20
+
21
+ export const iterate_metadata = (props: IMetadataIteratorProps): void => {
22
+ if (props.type.isTypeParameter() === true) {
23
+ props.errors.push({
24
+ name: TypeFactory.getFullName({
25
+ checker: props.checker,
26
+ type: props.type,
27
+ }),
28
+ explore: { ...props.explore },
29
+ messages: ["non-specified generic argument found."],
30
+ });
31
+ return;
32
+ }
33
+ // CHECK SPECIAL CASES
34
+ else if (
35
+ (props.explore.aliased !== true && iterate_metadata_alias(props)) ||
36
+ iterate_metadata_intersection(props) ||
37
+ iterate_metadata_union(props) ||
38
+ iterate_metadata_escape(props)
39
+ )
40
+ return;
41
+
42
+ // ITERATE CASES
43
+ iterate_metadata_coalesce(props) ||
44
+ iterate_metadata_function(props) ||
45
+ iterate_metadata_constant(props) ||
46
+ iterate_metadata_template(props) ||
47
+ iterate_metadata_atomic(props) ||
48
+ iterate_metadata_tuple(props as IMetadataIteratorProps<ts.TupleType>) ||
49
+ iterate_metadata_array(props) ||
50
+ iterate_metadata_native(props) ||
51
+ iterate_metadata_map(props) ||
52
+ iterate_metadata_set(props) ||
53
+ iterate_metadata_object(props);
54
+ };
@@ -1,28 +1,28 @@
1
- import ts from "typescript";
2
-
3
- import { MetadataAlias } from "../../../schemas/metadata/MetadataAlias";
4
-
5
- import { ArrayUtil } from "../../../utils/ArrayUtil";
6
-
7
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
8
- import { emplace_metadata_alias } from "./emplace_metadata_alias";
9
-
10
- export const iterate_metadata_alias = (
11
- props: IMetadataIteratorProps,
12
- ): boolean => {
13
- if (props.options.absorb !== false || props.type.aliasSymbol === undefined)
14
- return false;
15
-
16
- const node: ts.Declaration | undefined =
17
- props.type.aliasSymbol.declarations?.[0];
18
- if (node === undefined) return false;
19
-
20
- // CONSTRUCT DEFINITION
21
- const alias: MetadataAlias = emplace_metadata_alias(props);
22
- ArrayUtil.add(
23
- props.metadata.aliases,
24
- alias,
25
- (elem) => elem.name === alias.name,
26
- );
27
- return true;
28
- };
1
+ import ts from "typescript";
2
+
3
+ import { MetadataAlias } from "../../../schemas/metadata/MetadataAlias";
4
+
5
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+
7
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
8
+ import { emplace_metadata_alias } from "./emplace_metadata_alias";
9
+
10
+ export const iterate_metadata_alias = (
11
+ props: IMetadataIteratorProps,
12
+ ): boolean => {
13
+ if (props.options.absorb !== false || props.type.aliasSymbol === undefined)
14
+ return false;
15
+
16
+ const node: ts.Declaration | undefined =
17
+ props.type.aliasSymbol.declarations?.[0];
18
+ if (node === undefined) return false;
19
+
20
+ // CONSTRUCT DEFINITION
21
+ const alias: MetadataAlias = emplace_metadata_alias(props);
22
+ ArrayUtil.add(
23
+ props.metadata.aliases,
24
+ alias,
25
+ (elem) => elem.name === alias.name,
26
+ );
27
+ return true;
28
+ };
@@ -1,63 +1,63 @@
1
- import ts from "typescript";
2
-
3
- import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
4
- import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
9
- import { emplace_metadata_array_type } from "./emplace_metadata_array_type";
10
-
11
- export const iterate_metadata_array = (
12
- props: IMetadataIteratorProps,
13
- ): boolean => {
14
- const array: ts.Type | null =
15
- props.checker.isArrayType(props.type) === false
16
- ? find_array_extended({
17
- checker: props.checker,
18
- memory: new Map(),
19
- type: props.type,
20
- })
21
- : props.type;
22
- if (array === null) return false;
23
-
24
- const arrayType: MetadataArrayType = emplace_metadata_array_type({
25
- ...props,
26
- array,
27
- });
28
- ArrayUtil.add(
29
- props.metadata.arrays,
30
- MetadataArray.create({
31
- type: arrayType,
32
- tags: [],
33
- }),
34
- (elem) => elem.type.name === arrayType.name,
35
- );
36
- return true;
37
- };
38
-
39
- const find_array_extended = (props: {
40
- checker: ts.TypeChecker;
41
- memory: Map<ts.Type, ts.Type | null>;
42
- type: ts.Type;
43
- }): ts.Type | null => {
44
- const cached = props.memory.get(props.type);
45
- if (cached !== undefined) return null;
46
-
47
- props.memory.set(props.type, null);
48
- const res: ts.Type | null = (() => {
49
- if (props.type.isClassOrInterface() === false) return null;
50
- for (const t of props.type.resolvedBaseTypes ?? [])
51
- if (props.checker.isArrayType(t)) return t;
52
- else {
53
- const res: ts.Type | null = find_array_extended({
54
- ...props,
55
- type: t,
56
- });
57
- if (res !== null) return res;
58
- }
59
- return null;
60
- })();
61
- props.memory.set(props.type, res);
62
- return res;
63
- };
1
+ import ts from "typescript";
2
+
3
+ import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
4
+ import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
9
+ import { emplace_metadata_array_type } from "./emplace_metadata_array_type";
10
+
11
+ export const iterate_metadata_array = (
12
+ props: IMetadataIteratorProps,
13
+ ): boolean => {
14
+ const array: ts.Type | null =
15
+ props.checker.isArrayType(props.type) === false
16
+ ? find_array_extended({
17
+ checker: props.checker,
18
+ memory: new Map(),
19
+ type: props.type,
20
+ })
21
+ : props.type;
22
+ if (array === null) return false;
23
+
24
+ const arrayType: MetadataArrayType = emplace_metadata_array_type({
25
+ ...props,
26
+ array,
27
+ });
28
+ ArrayUtil.add(
29
+ props.metadata.arrays,
30
+ MetadataArray.create({
31
+ type: arrayType,
32
+ tags: [],
33
+ }),
34
+ (elem) => elem.type.name === arrayType.name,
35
+ );
36
+ return true;
37
+ };
38
+
39
+ const find_array_extended = (props: {
40
+ checker: ts.TypeChecker;
41
+ memory: Map<ts.Type, ts.Type | null>;
42
+ type: ts.Type;
43
+ }): ts.Type | null => {
44
+ const cached = props.memory.get(props.type);
45
+ if (cached !== undefined) return null;
46
+
47
+ props.memory.set(props.type, null);
48
+ const res: ts.Type | null = (() => {
49
+ if (props.type.isClassOrInterface() === false) return null;
50
+ for (const t of props.type.resolvedBaseTypes ?? [])
51
+ if (props.checker.isArrayType(t)) return t;
52
+ else {
53
+ const res: ts.Type | null = find_array_extended({
54
+ ...props,
55
+ type: t,
56
+ });
57
+ if (res !== null) return res;
58
+ }
59
+ return null;
60
+ })();
61
+ props.memory.set(props.type, res);
62
+ return res;
63
+ };
@@ -1,62 +1,62 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataAtomic } from "../../../schemas/metadata/MetadataAtomic";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- const same = (type: ts.Type | null) => {
9
- if (type === null) return () => false;
10
- return (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
11
- };
12
-
13
- export const iterate_metadata_atomic = (props: {
14
- metadata: Metadata;
15
- type: ts.Type;
16
- }): boolean => {
17
- // PREPARE INTERNAL FUNCTIONS
18
- const filter = same(props.type);
19
- const check = (info: IAtomicInfo) => {
20
- if (filter(info.atomic) || filter(info.literal)) {
21
- ArrayUtil.add(
22
- props.metadata.atomics,
23
- MetadataAtomic.create({ type: info.name, tags: [] }),
24
- (x, y) => x.type === y.type,
25
- );
26
- return true;
27
- }
28
- return false;
29
- };
30
-
31
- // CHECK EACH TYPES
32
- return ATOMICS.some((info) => check(info));
33
- };
34
-
35
- const ATOMICS: IAtomicInfo[] = [
36
- {
37
- name: "boolean",
38
- atomic: ts.TypeFlags.BooleanLike,
39
- literal: ts.TypeFlags.BooleanLiteral,
40
- },
41
- {
42
- name: "number",
43
- atomic: ts.TypeFlags.NumberLike,
44
- literal: ts.TypeFlags.NumberLiteral,
45
- },
46
- {
47
- name: "bigint",
48
- atomic: ts.TypeFlags.BigInt,
49
- literal: ts.TypeFlags.BigIntLiteral,
50
- },
51
- {
52
- name: "string",
53
- atomic: ts.TypeFlags.StringLike,
54
- literal: ts.TypeFlags.StringLiteral,
55
- },
56
- ];
57
-
58
- interface IAtomicInfo {
59
- name: "boolean" | "number" | "bigint" | "string";
60
- atomic: ts.TypeFlags;
61
- literal: ts.TypeFlags;
62
- }
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+ import { MetadataAtomic } from "../../../schemas/metadata/MetadataAtomic";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ const same = (type: ts.Type | null) => {
9
+ if (type === null) return () => false;
10
+ return (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
11
+ };
12
+
13
+ export const iterate_metadata_atomic = (props: {
14
+ metadata: Metadata;
15
+ type: ts.Type;
16
+ }): boolean => {
17
+ // PREPARE INTERNAL FUNCTIONS
18
+ const filter = same(props.type);
19
+ const check = (info: IAtomicInfo) => {
20
+ if (filter(info.atomic) || filter(info.literal)) {
21
+ ArrayUtil.add(
22
+ props.metadata.atomics,
23
+ MetadataAtomic.create({ type: info.name, tags: [] }),
24
+ (x, y) => x.type === y.type,
25
+ );
26
+ return true;
27
+ }
28
+ return false;
29
+ };
30
+
31
+ // CHECK EACH TYPES
32
+ return ATOMICS.some((info) => check(info));
33
+ };
34
+
35
+ const ATOMICS: IAtomicInfo[] = [
36
+ {
37
+ name: "boolean",
38
+ atomic: ts.TypeFlags.BooleanLike,
39
+ literal: ts.TypeFlags.BooleanLiteral,
40
+ },
41
+ {
42
+ name: "number",
43
+ atomic: ts.TypeFlags.NumberLike,
44
+ literal: ts.TypeFlags.NumberLiteral,
45
+ },
46
+ {
47
+ name: "bigint",
48
+ atomic: ts.TypeFlags.BigInt,
49
+ literal: ts.TypeFlags.BigIntLiteral,
50
+ },
51
+ {
52
+ name: "string",
53
+ atomic: ts.TypeFlags.StringLike,
54
+ literal: ts.TypeFlags.StringLiteral,
55
+ },
56
+ ];
57
+
58
+ interface IAtomicInfo {
59
+ name: "boolean" | "number" | "bigint" | "string";
60
+ atomic: ts.TypeFlags;
61
+ literal: ts.TypeFlags;
62
+ }
@@ -1,28 +1,28 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
-
5
- import { Writable } from "../../../typings/Writable";
6
-
7
- export const iterate_metadata_coalesce = (props: {
8
- metadata: Metadata;
9
- type: ts.Type;
10
- }): boolean => {
11
- const filter = (flag: ts.TypeFlags) => (props.type.getFlags() & flag) !== 0;
12
- if (filter(ts.TypeFlags.Unknown) || filter(ts.TypeFlags.Any)) {
13
- Writable(props.metadata).any = true;
14
- return true;
15
- } else if (filter(ts.TypeFlags.Null)) {
16
- Writable(props.metadata).nullable = true;
17
- return true;
18
- } else if (
19
- filter(ts.TypeFlags.Undefined) ||
20
- filter(ts.TypeFlags.Never) ||
21
- filter(ts.TypeFlags.Void) ||
22
- filter(ts.TypeFlags.VoidLike)
23
- ) {
24
- Writable(props.metadata).required = false;
25
- return true;
26
- }
27
- return false;
28
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+
5
+ import { Writable } from "../../../typings/Writable";
6
+
7
+ export const iterate_metadata_coalesce = (props: {
8
+ metadata: Metadata;
9
+ type: ts.Type;
10
+ }): boolean => {
11
+ const filter = (flag: ts.TypeFlags) => (props.type.getFlags() & flag) !== 0;
12
+ if (filter(ts.TypeFlags.Unknown) || filter(ts.TypeFlags.Any)) {
13
+ Writable(props.metadata).any = true;
14
+ return true;
15
+ } else if (filter(ts.TypeFlags.Null)) {
16
+ Writable(props.metadata).nullable = true;
17
+ return true;
18
+ } else if (
19
+ filter(ts.TypeFlags.Undefined) ||
20
+ filter(ts.TypeFlags.Never) ||
21
+ filter(ts.TypeFlags.Void) ||
22
+ filter(ts.TypeFlags.VoidLike)
23
+ ) {
24
+ Writable(props.metadata).required = false;
25
+ return true;
26
+ }
27
+ return false;
28
+ };