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,64 +1,64 @@
1
- import ts from "typescript";
2
-
3
- export namespace TemplateFactory {
4
- export const generate = (expressions: ts.Expression[]): ts.Expression => {
5
- if (expressions.every((exp) => ts.isStringLiteral(exp)))
6
- return ts.factory.createStringLiteral(
7
- (expressions as ts.StringLiteral[]).map((str) => str.text).join(""),
8
- );
9
-
10
- const iterator: IIterator = {
11
- value: "",
12
- index: 0,
13
- };
14
- gather({
15
- expressions,
16
- iterator,
17
- });
18
-
19
- const head: ts.TemplateHead = ts.factory.createTemplateHead(iterator.value);
20
- const spans: ts.TemplateSpan[] = [];
21
-
22
- while (true) {
23
- const elem: ts.Expression = expressions[iterator.index++]!;
24
- gather({
25
- expressions,
26
- iterator,
27
- });
28
-
29
- const broken: boolean = iterator.index === expressions.length;
30
- spans.push(
31
- ts.factory.createTemplateSpan(
32
- elem,
33
- broken
34
- ? ts.factory.createTemplateTail(iterator.value)
35
- : ts.factory.createTemplateMiddle(iterator.value),
36
- ),
37
- );
38
- if (broken === true) break;
39
- }
40
- return ts.factory.createTemplateExpression(head, spans);
41
- };
42
-
43
- const gather = (props: {
44
- expressions: ts.Expression[];
45
- iterator: IIterator;
46
- }): void => {
47
- const found: number = props.expressions.findIndex(
48
- (elem, index) =>
49
- index >= props.iterator.index && !ts.isStringLiteral(elem),
50
- );
51
-
52
- const last: number = found !== -1 ? found : props.expressions.length;
53
- props.iterator.value = props.expressions
54
- .slice(props.iterator.index, last)
55
- .map((elem) => (elem as ts.StringLiteral).text)
56
- .reduce((x, y) => x + y, "");
57
- props.iterator.index = last;
58
- };
59
-
60
- interface IIterator {
61
- value: string;
62
- index: number;
63
- }
64
- }
1
+ import ts from "typescript";
2
+
3
+ export namespace TemplateFactory {
4
+ export const generate = (expressions: ts.Expression[]): ts.Expression => {
5
+ if (expressions.every((exp) => ts.isStringLiteral(exp)))
6
+ return ts.factory.createStringLiteral(
7
+ (expressions as ts.StringLiteral[]).map((str) => str.text).join(""),
8
+ );
9
+
10
+ const iterator: IIterator = {
11
+ value: "",
12
+ index: 0,
13
+ };
14
+ gather({
15
+ expressions,
16
+ iterator,
17
+ });
18
+
19
+ const head: ts.TemplateHead = ts.factory.createTemplateHead(iterator.value);
20
+ const spans: ts.TemplateSpan[] = [];
21
+
22
+ while (true) {
23
+ const elem: ts.Expression = expressions[iterator.index++]!;
24
+ gather({
25
+ expressions,
26
+ iterator,
27
+ });
28
+
29
+ const broken: boolean = iterator.index === expressions.length;
30
+ spans.push(
31
+ ts.factory.createTemplateSpan(
32
+ elem,
33
+ broken
34
+ ? ts.factory.createTemplateTail(iterator.value)
35
+ : ts.factory.createTemplateMiddle(iterator.value),
36
+ ),
37
+ );
38
+ if (broken === true) break;
39
+ }
40
+ return ts.factory.createTemplateExpression(head, spans);
41
+ };
42
+
43
+ const gather = (props: {
44
+ expressions: ts.Expression[];
45
+ iterator: IIterator;
46
+ }): void => {
47
+ const found: number = props.expressions.findIndex(
48
+ (elem, index) =>
49
+ index >= props.iterator.index && !ts.isStringLiteral(elem),
50
+ );
51
+
52
+ const last: number = found !== -1 ? found : props.expressions.length;
53
+ props.iterator.value = props.expressions
54
+ .slice(props.iterator.index, last)
55
+ .map((elem) => (elem as ts.StringLiteral).text)
56
+ .reduce((x, y) => x + y, "");
57
+ props.iterator.index = last;
58
+ };
59
+
60
+ interface IIterator {
61
+ value: string;
62
+ index: number;
63
+ }
64
+ }
@@ -1,140 +1,140 @@
1
- import ts from "typescript";
2
-
3
- export namespace TypeFactory {
4
- export const isFunction = (type: ts.Type): boolean =>
5
- getFunction(type) !== null;
6
-
7
- export const getFunction = (type: ts.Type) => {
8
- const node = type.symbol?.declarations?.[0];
9
- if (node === undefined) return null;
10
-
11
- return ts.isFunctionLike(node)
12
- ? node
13
- : ts.isPropertyAssignment(node) || ts.isPropertyDeclaration(node)
14
- ? ts.isFunctionLike(node.initializer)
15
- ? node.initializer
16
- : null
17
- : null;
18
- };
19
-
20
- export const getReturnTypeOfClassMethod = (props: {
21
- checker: ts.TypeChecker;
22
- class: ts.Type;
23
- function: string;
24
- }): ts.Type | null => {
25
- // FIND TO-JSON METHOD
26
- const symbol: ts.Symbol | undefined = props.class.getProperty(
27
- props.function,
28
- );
29
- if (!symbol) return null;
30
- else if (!symbol.valueDeclaration) return null;
31
-
32
- // GET FUNCTION DECLARATION
33
- const functor: ts.Type = props.checker.getTypeOfSymbolAtLocation(
34
- symbol,
35
- symbol.valueDeclaration,
36
- );
37
-
38
- // RETURNS THE RETURN-TYPE
39
- const signature: ts.Signature | undefined =
40
- props.checker.getSignaturesOfType(functor, ts.SignatureKind.Call)[0];
41
- return signature ? signature.getReturnType() : null;
42
- };
43
-
44
- export const getFullName = (props: {
45
- checker: ts.TypeChecker;
46
- type: ts.Type;
47
- symbol?: ts.Symbol;
48
- }): string => {
49
- // PRIMITIVE
50
- const symbol =
51
- props.symbol ?? props.type.aliasSymbol ?? props.type.getSymbol();
52
- if (symbol === undefined) return props.checker.typeToString(props.type);
53
-
54
- // UNION OR INTERSECT
55
- if (
56
- props.type.aliasSymbol === undefined &&
57
- props.type.isUnionOrIntersection()
58
- ) {
59
- const joiner: string = props.type.isIntersection() ? " & " : " | ";
60
- return props.type.types
61
- .map((child) =>
62
- getFullName({
63
- checker: props.checker,
64
- type: child,
65
- }),
66
- )
67
- .join(joiner);
68
- }
69
-
70
- //----
71
- // SPECIALIZATION
72
- //----
73
- const name: string = get_name(symbol);
74
-
75
- // CHECK GENERIC
76
- const generic: readonly ts.Type[] = props.type.aliasSymbol
77
- ? (props.type.aliasTypeArguments ?? [])
78
- : props.checker.getTypeArguments(props.type as ts.TypeReference);
79
- return generic.length
80
- ? name === "Promise"
81
- ? getFullName({
82
- checker: props.checker,
83
- type: generic[0]!,
84
- })
85
- : `${name}<${generic
86
- .map((child) =>
87
- getFullName({
88
- checker: props.checker,
89
- type: child,
90
- }),
91
- )
92
- .join(", ")}>`
93
- : name;
94
- };
95
-
96
- const explore_name = (props: { node: ts.Node; name: string }): string =>
97
- ts.isModuleBlock(props.node)
98
- ? explore_name({
99
- node: props.node.parent.parent,
100
- name: `${props.node.parent.name.getFullText().trim()}.${props.name}`,
101
- })
102
- : props.name;
103
-
104
- const get_name = (symbol: ts.Symbol): string => {
105
- const parent = symbol.getDeclarations()?.[0]?.parent;
106
- return parent
107
- ? explore_name({
108
- node: parent,
109
- name: symbol.escapedName.toString(),
110
- })
111
- : "__type";
112
- };
113
-
114
- export const keyword = (
115
- type:
116
- | "void"
117
- | "any"
118
- | "unknown"
119
- | "boolean"
120
- | "number"
121
- | "bigint"
122
- | "string",
123
- ) => {
124
- return ts.factory.createKeywordTypeNode(
125
- type === "void"
126
- ? ts.SyntaxKind.VoidKeyword
127
- : type === "any"
128
- ? ts.SyntaxKind.AnyKeyword
129
- : type === "unknown"
130
- ? ts.SyntaxKind.UnknownKeyword
131
- : type === "boolean"
132
- ? ts.SyntaxKind.BooleanKeyword
133
- : type === "number"
134
- ? ts.SyntaxKind.NumberKeyword
135
- : type === "bigint"
136
- ? ts.SyntaxKind.BigIntKeyword
137
- : ts.SyntaxKind.StringKeyword,
138
- );
139
- };
140
- }
1
+ import ts from "typescript";
2
+
3
+ export namespace TypeFactory {
4
+ export const isFunction = (type: ts.Type): boolean =>
5
+ getFunction(type) !== null;
6
+
7
+ export const getFunction = (type: ts.Type) => {
8
+ const node = type.symbol?.declarations?.[0];
9
+ if (node === undefined) return null;
10
+
11
+ return ts.isFunctionLike(node)
12
+ ? node
13
+ : ts.isPropertyAssignment(node) || ts.isPropertyDeclaration(node)
14
+ ? ts.isFunctionLike(node.initializer)
15
+ ? node.initializer
16
+ : null
17
+ : null;
18
+ };
19
+
20
+ export const getReturnTypeOfClassMethod = (props: {
21
+ checker: ts.TypeChecker;
22
+ class: ts.Type;
23
+ function: string;
24
+ }): ts.Type | null => {
25
+ // FIND TO-JSON METHOD
26
+ const symbol: ts.Symbol | undefined = props.class.getProperty(
27
+ props.function,
28
+ );
29
+ if (!symbol) return null;
30
+ else if (!symbol.valueDeclaration) return null;
31
+
32
+ // GET FUNCTION DECLARATION
33
+ const functor: ts.Type = props.checker.getTypeOfSymbolAtLocation(
34
+ symbol,
35
+ symbol.valueDeclaration,
36
+ );
37
+
38
+ // RETURNS THE RETURN-TYPE
39
+ const signature: ts.Signature | undefined =
40
+ props.checker.getSignaturesOfType(functor, ts.SignatureKind.Call)[0];
41
+ return signature ? signature.getReturnType() : null;
42
+ };
43
+
44
+ export const getFullName = (props: {
45
+ checker: ts.TypeChecker;
46
+ type: ts.Type;
47
+ symbol?: ts.Symbol;
48
+ }): string => {
49
+ // PRIMITIVE
50
+ const symbol =
51
+ props.symbol ?? props.type.aliasSymbol ?? props.type.getSymbol();
52
+ if (symbol === undefined) return props.checker.typeToString(props.type);
53
+
54
+ // UNION OR INTERSECT
55
+ if (
56
+ props.type.aliasSymbol === undefined &&
57
+ props.type.isUnionOrIntersection()
58
+ ) {
59
+ const joiner: string = props.type.isIntersection() ? " & " : " | ";
60
+ return props.type.types
61
+ .map((child) =>
62
+ getFullName({
63
+ checker: props.checker,
64
+ type: child,
65
+ }),
66
+ )
67
+ .join(joiner);
68
+ }
69
+
70
+ //----
71
+ // SPECIALIZATION
72
+ //----
73
+ const name: string = get_name(symbol);
74
+
75
+ // CHECK GENERIC
76
+ const generic: readonly ts.Type[] = props.type.aliasSymbol
77
+ ? (props.type.aliasTypeArguments ?? [])
78
+ : props.checker.getTypeArguments(props.type as ts.TypeReference);
79
+ return generic.length
80
+ ? name === "Promise"
81
+ ? getFullName({
82
+ checker: props.checker,
83
+ type: generic[0]!,
84
+ })
85
+ : `${name}<${generic
86
+ .map((child) =>
87
+ getFullName({
88
+ checker: props.checker,
89
+ type: child,
90
+ }),
91
+ )
92
+ .join(", ")}>`
93
+ : name;
94
+ };
95
+
96
+ const explore_name = (props: { node: ts.Node; name: string }): string =>
97
+ ts.isModuleBlock(props.node)
98
+ ? explore_name({
99
+ node: props.node.parent.parent,
100
+ name: `${props.node.parent.name.getFullText().trim()}.${props.name}`,
101
+ })
102
+ : props.name;
103
+
104
+ const get_name = (symbol: ts.Symbol): string => {
105
+ const parent = symbol.getDeclarations()?.[0]?.parent;
106
+ return parent
107
+ ? explore_name({
108
+ node: parent,
109
+ name: symbol.escapedName.toString(),
110
+ })
111
+ : "__type";
112
+ };
113
+
114
+ export const keyword = (
115
+ type:
116
+ | "void"
117
+ | "any"
118
+ | "unknown"
119
+ | "boolean"
120
+ | "number"
121
+ | "bigint"
122
+ | "string",
123
+ ) => {
124
+ return ts.factory.createKeywordTypeNode(
125
+ type === "void"
126
+ ? ts.SyntaxKind.VoidKeyword
127
+ : type === "any"
128
+ ? ts.SyntaxKind.AnyKeyword
129
+ : type === "unknown"
130
+ ? ts.SyntaxKind.UnknownKeyword
131
+ : type === "boolean"
132
+ ? ts.SyntaxKind.BooleanKeyword
133
+ : type === "number"
134
+ ? ts.SyntaxKind.NumberKeyword
135
+ : type === "bigint"
136
+ ? ts.SyntaxKind.BigIntKeyword
137
+ : ts.SyntaxKind.StringKeyword,
138
+ );
139
+ };
140
+ }
@@ -1,32 +1,32 @@
1
- import { Metadata } from "../../../schemas/metadata/Metadata";
2
- import { MetadataAlias } from "../../../schemas/metadata/MetadataAlias";
3
-
4
- import { ArrayUtil } from "../../../utils/ArrayUtil";
5
-
6
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
7
- import { explore_metadata } from "./explore_metadata";
8
-
9
- export const emplace_metadata_alias = (
10
- props: IMetadataIteratorProps,
11
- ): MetadataAlias => {
12
- // CHECK EXISTENCE
13
- const [alias, newbie, closure] = props.collection.emplaceAlias(
14
- props.checker,
15
- props.type,
16
- props.type.aliasSymbol!,
17
- );
18
- ArrayUtil.add(alias.nullables, props.metadata.nullable);
19
- if (newbie === false) return alias;
20
-
21
- // CONSTRUCT VALUE TYPE
22
- const value: Metadata = explore_metadata({
23
- ...props,
24
- explore: {
25
- ...props.explore,
26
- escaped: false,
27
- aliased: true,
28
- },
29
- });
30
- closure(value);
31
- return alias;
32
- };
1
+ import { Metadata } from "../../../schemas/metadata/Metadata";
2
+ import { MetadataAlias } from "../../../schemas/metadata/MetadataAlias";
3
+
4
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
5
+
6
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
7
+ import { explore_metadata } from "./explore_metadata";
8
+
9
+ export const emplace_metadata_alias = (
10
+ props: IMetadataIteratorProps,
11
+ ): MetadataAlias => {
12
+ // CHECK EXISTENCE
13
+ const [alias, newbie, closure] = props.collection.emplaceAlias(
14
+ props.checker,
15
+ props.type,
16
+ props.type.aliasSymbol!,
17
+ );
18
+ ArrayUtil.add(alias.nullables, props.metadata.nullable);
19
+ if (newbie === false) return alias;
20
+
21
+ // CONSTRUCT VALUE TYPE
22
+ const value: Metadata = explore_metadata({
23
+ ...props,
24
+ explore: {
25
+ ...props.explore,
26
+ escaped: false,
27
+ aliased: true,
28
+ },
29
+ });
30
+ closure(value);
31
+ return alias;
32
+ };
@@ -1,39 +1,39 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
9
- import { explore_metadata } from "./explore_metadata";
10
-
11
- interface IProps extends IMetadataIteratorProps {
12
- array: ts.Type;
13
- }
14
-
15
- export const emplace_metadata_array_type = (
16
- props: IProps,
17
- ): MetadataArrayType => {
18
- // CHECK EXISTENCE
19
- const [array, newbie, setValue] = props.collection.emplaceArray(
20
- props.checker,
21
- props.type,
22
- );
23
- ArrayUtil.add(array.nullables, props.metadata.nullable);
24
- if (newbie === false) return array;
25
-
26
- // CONSTRUCT VALUE TYPE
27
- const value: Metadata = explore_metadata({
28
- ...props,
29
- type: props.array.getNumberIndexType()!,
30
- explore: {
31
- ...props.explore,
32
- escaped: false,
33
- aliased: false,
34
- },
35
- });
36
- setValue(value);
37
-
38
- return array;
39
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+ import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
9
+ import { explore_metadata } from "./explore_metadata";
10
+
11
+ interface IProps extends IMetadataIteratorProps {
12
+ array: ts.Type;
13
+ }
14
+
15
+ export const emplace_metadata_array_type = (
16
+ props: IProps,
17
+ ): MetadataArrayType => {
18
+ // CHECK EXISTENCE
19
+ const [array, newbie, setValue] = props.collection.emplaceArray(
20
+ props.checker,
21
+ props.type,
22
+ );
23
+ ArrayUtil.add(array.nullables, props.metadata.nullable);
24
+ if (newbie === false) return array;
25
+
26
+ // CONSTRUCT VALUE TYPE
27
+ const value: Metadata = explore_metadata({
28
+ ...props,
29
+ type: props.array.getNumberIndexType()!,
30
+ explore: {
31
+ ...props.explore,
32
+ escaped: false,
33
+ aliased: false,
34
+ },
35
+ });
36
+ setValue(value);
37
+
38
+ return array;
39
+ };
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
4
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
5
5
  import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
6
6
 
7
7
  import { Writable } from "../../../typings/Writable";
@@ -16,7 +16,7 @@ import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
16
16
 
17
17
  export const emplace_metadata_object = (
18
18
  props: IMetadataIteratorProps,
19
- ): MetadataObject => {
19
+ ): MetadataObjectType => {
20
20
  // EMPLACE OBJECT
21
21
  const [obj, newbie] = props.collection.emplace(props.checker, props.type);
22
22
  ArrayUtil.add(