typia 7.0.0-dev.20240916 → 7.0.0-dev.20240918

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 (170) hide show
  1. package/lib/factories/JsonMetadataFactory.d.ts +7 -1
  2. package/lib/factories/JsonMetadataFactory.js +17 -15
  3. package/lib/factories/JsonMetadataFactory.js.map +1 -1
  4. package/lib/factories/MetadataFactory.d.ts +14 -2
  5. package/lib/factories/MetadataFactory.js +287 -324
  6. package/lib/factories/MetadataFactory.js.map +1 -1
  7. package/lib/factories/ProtobufFactory.d.ts +8 -1
  8. package/lib/factories/ProtobufFactory.js +22 -17
  9. package/lib/factories/ProtobufFactory.js.map +1 -1
  10. package/lib/factories/internal/metadata/IMetadataIteratorProps.d.ts +13 -0
  11. package/lib/factories/internal/metadata/IMetadataIteratorProps.js +3 -0
  12. package/lib/factories/internal/metadata/IMetadataIteratorProps.js.map +1 -0
  13. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +2 -4
  14. package/lib/factories/internal/metadata/emplace_metadata_alias.js +10 -18
  15. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  16. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +6 -3
  17. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +10 -18
  18. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  19. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +2 -4
  20. package/lib/factories/internal/metadata/emplace_metadata_object.js +171 -158
  21. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  22. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -3
  23. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +26 -34
  24. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  25. package/lib/factories/internal/metadata/explore_metadata.d.ts +6 -3
  26. package/lib/factories/internal/metadata/explore_metadata.js +24 -21
  27. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata.d.ts +2 -5
  29. package/lib/factories/internal/metadata/iterate_metadata.js +27 -36
  30. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  31. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +2 -5
  32. package/lib/factories/internal/metadata/iterate_metadata_alias.js +11 -19
  33. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +2 -5
  35. package/lib/factories/internal/metadata/iterate_metadata_array.js +59 -56
  36. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts +4 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +3 -3
  39. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  40. package/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts +4 -1
  41. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +5 -5
  42. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  43. package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +4 -1
  44. package/lib/factories/internal/metadata/iterate_metadata_collection.js +119 -121
  45. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +4 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +7 -7
  48. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_constant.d.ts +2 -4
  50. package/lib/factories/internal/metadata/iterate_metadata_constant.js +39 -43
  51. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  52. package/lib/factories/internal/metadata/iterate_metadata_escape.d.ts +2 -5
  53. package/lib/factories/internal/metadata/iterate_metadata_escape.js +15 -23
  54. package/lib/factories/internal/metadata/iterate_metadata_escape.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_function.d.ts +2 -5
  56. package/lib/factories/internal/metadata/iterate_metadata_function.js +43 -51
  57. package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +2 -5
  59. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +142 -152
  60. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +2 -5
  62. package/lib/factories/internal/metadata/iterate_metadata_map.js +15 -23
  63. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_native.d.ts +2 -3
  65. package/lib/factories/internal/metadata/iterate_metadata_native.js +42 -36
  66. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  67. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +2 -5
  68. package/lib/factories/internal/metadata/iterate_metadata_object.js +12 -20
  69. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  70. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +2 -5
  71. package/lib/factories/internal/metadata/iterate_metadata_set.js +11 -19
  72. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  73. package/lib/factories/internal/metadata/iterate_metadata_sort.d.ts +4 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_sort.js +112 -95
  75. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  76. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +2 -5
  77. package/lib/factories/internal/metadata/iterate_metadata_template.js +17 -25
  78. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +2 -4
  80. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +9 -17
  81. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  82. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +2 -5
  83. package/lib/factories/internal/metadata/iterate_metadata_union.js +7 -15
  84. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  85. package/lib/programmers/CheckerProgrammer.js +11 -5
  86. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  87. package/lib/programmers/RandomProgrammer.js +18 -12
  88. package/lib/programmers/RandomProgrammer.js.map +1 -1
  89. package/lib/programmers/http/HttpFormDataProgrammer.js +12 -6
  90. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  91. package/lib/programmers/http/HttpHeadersProgrammer.js +12 -6
  92. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  93. package/lib/programmers/http/HttpParameterProgrammer.js +12 -6
  94. package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
  95. package/lib/programmers/http/HttpQueryProgrammer.js +14 -6
  96. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  97. package/lib/programmers/json/JsonStringifyProgrammer.js +6 -1
  98. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  99. package/lib/programmers/misc/MiscCloneProgrammer.js +18 -12
  100. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  101. package/lib/programmers/misc/MiscLiteralsProgrammer.js +21 -15
  102. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  103. package/lib/programmers/misc/MiscPruneProgrammer.js +11 -5
  104. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  105. package/lib/programmers/notations/NotationGeneralProgrammer.js +11 -5
  106. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  107. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +7 -1
  108. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  109. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +7 -1
  110. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  111. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +7 -1
  112. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  113. package/lib/transformers/features/json/JsonApplicationTransformer.js +12 -6
  114. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  115. package/lib/transformers/features/llm/LlmApplicationTransformer.js +13 -7
  116. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  117. package/lib/transformers/features/llm/LlmSchemaTransformer.js +12 -6
  118. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  119. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +12 -6
  120. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  121. package/lib/transformers/features/reflect/ReflectNameTransformer.js +11 -5
  122. package/lib/transformers/features/reflect/ReflectNameTransformer.js.map +1 -1
  123. package/package.json +1 -1
  124. package/src/factories/JsonMetadataFactory.ts +21 -14
  125. package/src/factories/MetadataFactory.ts +269 -184
  126. package/src/factories/ProtobufFactory.ts +23 -16
  127. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +16 -0
  128. package/src/factories/internal/metadata/emplace_metadata_alias.ts +22 -31
  129. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +26 -29
  130. package/src/factories/internal/metadata/emplace_metadata_object.ts +163 -144
  131. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +39 -40
  132. package/src/factories/internal/metadata/explore_metadata.ts +22 -20
  133. package/src/factories/internal/metadata/iterate_metadata.ts +31 -80
  134. package/src/factories/internal/metadata/iterate_metadata_alias.ts +18 -24
  135. package/src/factories/internal/metadata/iterate_metadata_array.ts +51 -51
  136. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +6 -6
  137. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +8 -8
  138. package/src/factories/internal/metadata/iterate_metadata_collection.ts +128 -114
  139. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +24 -22
  140. package/src/factories/internal/metadata/iterate_metadata_constant.ts +63 -63
  141. package/src/factories/internal/metadata/iterate_metadata_escape.ts +35 -40
  142. package/src/factories/internal/metadata/iterate_metadata_function.ts +70 -74
  143. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +182 -182
  144. package/src/factories/internal/metadata/iterate_metadata_map.ts +37 -36
  145. package/src/factories/internal/metadata/iterate_metadata_native.ts +56 -43
  146. package/src/factories/internal/metadata/iterate_metadata_object.ts +18 -24
  147. package/src/factories/internal/metadata/iterate_metadata_set.ts +24 -30
  148. package/src/factories/internal/metadata/iterate_metadata_sort.ts +71 -62
  149. package/src/factories/internal/metadata/iterate_metadata_template.ts +29 -31
  150. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +16 -27
  151. package/src/factories/internal/metadata/iterate_metadata_union.ts +16 -24
  152. package/src/programmers/CheckerProgrammer.ts +11 -8
  153. package/src/programmers/RandomProgrammer.ts +18 -15
  154. package/src/programmers/http/HttpFormDataProgrammer.ts +12 -9
  155. package/src/programmers/http/HttpHeadersProgrammer.ts +12 -9
  156. package/src/programmers/http/HttpParameterProgrammer.ts +12 -9
  157. package/src/programmers/http/HttpQueryProgrammer.ts +13 -9
  158. package/src/programmers/json/JsonStringifyProgrammer.ts +6 -4
  159. package/src/programmers/misc/MiscCloneProgrammer.ts +18 -15
  160. package/src/programmers/misc/MiscLiteralsProgrammer.ts +20 -17
  161. package/src/programmers/misc/MiscPruneProgrammer.ts +11 -8
  162. package/src/programmers/notations/NotationGeneralProgrammer.ts +11 -8
  163. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +7 -4
  164. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +7 -4
  165. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +7 -4
  166. package/src/transformers/features/json/JsonApplicationTransformer.ts +12 -9
  167. package/src/transformers/features/llm/LlmApplicationTransformer.ts +13 -10
  168. package/src/transformers/features/llm/LlmSchemaTransformer.ts +12 -9
  169. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +12 -9
  170. package/src/transformers/features/reflect/ReflectNameTransformer.ts +11 -8
@@ -1,41 +1,35 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
-
5
3
  import { ArrayUtil } from "../../../utils/ArrayUtil";
6
4
 
7
- import { MetadataCollection } from "../../MetadataCollection";
8
- import { MetadataFactory } from "../../MetadataFactory";
9
5
  import { TypeFactory } from "../../TypeFactory";
6
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
10
7
  import { explore_metadata } from "./explore_metadata";
11
8
 
12
- export const iterate_metadata_set =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (errors: MetadataFactory.IError[]) =>
17
- (
18
- meta: Metadata,
19
- type: ts.Type,
20
- explore: MetadataFactory.IExplore,
21
- ): boolean => {
22
- type = checker.getApparentType(type);
9
+ export const iterate_metadata_set = (
10
+ props: IMetadataIteratorProps,
11
+ ): boolean => {
12
+ const type: ts.Type = props.checker.getApparentType(props.type);
23
13
 
24
- const name = TypeFactory.getFullName(checker)(type, type.getSymbol());
25
- const generic = type.aliasSymbol
26
- ? type.aliasTypeArguments
27
- : checker.getTypeArguments(type as ts.TypeReference);
28
- if (name.substring(0, 4) !== "Set<" || generic?.length !== 1) return false;
14
+ const name = TypeFactory.getFullName(props.checker)(type, type.getSymbol());
15
+ const generic = type.aliasSymbol
16
+ ? type.aliasTypeArguments
17
+ : props.checker.getTypeArguments(type as ts.TypeReference);
18
+ if (name.substring(0, 4) !== "Set<" || generic?.length !== 1) return false;
29
19
 
30
- const key: ts.Type = generic[0]!;
31
- ArrayUtil.set(
32
- meta.sets,
33
- explore_metadata(checker)(options)(collection)(errors)(key, {
34
- ...explore,
20
+ const key: ts.Type = generic[0]!;
21
+ ArrayUtil.set(
22
+ props.metadata.sets,
23
+ explore_metadata({
24
+ ...props,
25
+ type: key,
26
+ explore: {
27
+ ...props.explore,
35
28
  escaped: false,
36
29
  aliased: false,
37
- }),
38
- (elem) => elem.getName(),
39
- );
40
- return true;
41
- };
30
+ },
31
+ }),
32
+ (elem) => elem.getName(),
33
+ );
34
+ return true;
35
+ };
@@ -3,72 +3,81 @@ import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
3
3
 
4
4
  import { MetadataCollection } from "../../MetadataCollection";
5
5
 
6
- export const iterate_metadata_sort =
7
- (collection: MetadataCollection) => (meta: Metadata) => {
8
- const visited: Set<Metadata> = new Set();
9
- for (const array of collection.arrays())
10
- iterate(visited)(collection)(array.value);
11
- for (const tuple of collection.tuples())
12
- for (const element of tuple.elements)
13
- iterate(visited)(collection)(element);
14
- for (const object of collection.objects())
15
- for (const property of object.properties)
16
- iterate(visited)(collection)(property.value);
17
- iterate(visited)(collection)(meta);
18
- };
6
+ export const iterate_metadata_sort = (props: {
7
+ collection: MetadataCollection;
8
+ metadata: Metadata;
9
+ }) => {
10
+ const visited: Set<Metadata> = new Set();
11
+ const next = (metadata: Metadata) =>
12
+ iterate({
13
+ visited,
14
+ collection: props.collection,
15
+ metadata,
16
+ });
17
+ for (const array of props.collection.arrays()) next(array.value);
18
+ for (const tuple of props.collection.tuples())
19
+ for (const element of tuple.elements) next(element);
20
+ for (const object of props.collection.objects())
21
+ for (const property of object.properties) next(property.value);
22
+ next(props.metadata);
23
+ };
19
24
 
20
- const iterate =
21
- (visited: Set<Metadata>) =>
22
- (collection: MetadataCollection) =>
23
- (meta: Metadata) => {
24
- if (visited.has(meta)) return;
25
- visited.add(meta);
25
+ const iterate = (props: {
26
+ visited: Set<Metadata>;
27
+ collection: MetadataCollection;
28
+ metadata: Metadata;
29
+ }) => {
30
+ if (props.visited.has(props.metadata)) return;
31
+ props.visited.add(props.metadata);
26
32
 
27
- // ITERATE CHILDREN
28
- for (const map of meta.maps) iterate(visited)(collection)(map.value);
29
- for (const set of meta.sets) iterate(visited)(collection)(set);
30
- if (meta.escaped !== null)
31
- iterate(visited)(collection)(meta.escaped.returns);
32
- if (meta.rest !== null) iterate(visited)(collection)(meta.rest);
33
+ const next = (metadata: Metadata) =>
34
+ iterate({
35
+ ...props,
36
+ metadata,
37
+ });
33
38
 
34
- // SORT OBJECTS
35
- if (meta.objects.length > 1) {
36
- meta.objects.sort((x, y) =>
37
- MetadataObject.covers(x, y) ? -1 : MetadataObject.covers(y, x) ? 1 : 0,
38
- );
39
- meta.union_index = collection.getUnionIndex(meta);
40
- }
39
+ // ITERATE CHILDREN
40
+ for (const map of props.metadata.maps) next(map.value);
41
+ for (const set of props.metadata.sets) next(set);
42
+ if (props.metadata.escaped !== null) next(props.metadata.escaped.returns);
43
+ if (props.metadata.rest !== null) next(props.metadata.rest);
41
44
 
42
- // SORT ARRAYS AND TUPLES
43
- if (meta.arrays.length > 1)
44
- meta.arrays.sort((x, y) =>
45
- Metadata.covers(x.type.value, y.type.value)
46
- ? -1
47
- : Metadata.covers(y.type.value, x.type.value)
48
- ? 1
49
- : 0,
50
- );
51
- if (meta.tuples.length > 1)
52
- meta.tuples.sort((x, y) => {
53
- const xt = Metadata.initialize();
54
- const yt = Metadata.initialize();
45
+ // SORT OBJECTS
46
+ if (props.metadata.objects.length > 1) {
47
+ props.metadata.objects.sort((x, y) =>
48
+ MetadataObject.covers(x, y) ? -1 : MetadataObject.covers(y, x) ? 1 : 0,
49
+ );
50
+ props.metadata.union_index = props.collection.getUnionIndex(props.metadata);
51
+ }
55
52
 
56
- xt.tuples.push(x);
57
- yt.tuples.push(y);
53
+ // SORT ARRAYS AND TUPLES
54
+ if (props.metadata.arrays.length > 1)
55
+ props.metadata.arrays.sort((x, y) =>
56
+ Metadata.covers(x.type.value, y.type.value)
57
+ ? -1
58
+ : Metadata.covers(y.type.value, x.type.value)
59
+ ? 1
60
+ : 0,
61
+ );
62
+ if (props.metadata.tuples.length > 1)
63
+ props.metadata.tuples.sort((x, y) => {
64
+ const xt = Metadata.initialize();
65
+ const yt = Metadata.initialize();
58
66
 
59
- return Metadata.covers(xt, yt) ? -1 : Metadata.covers(yt, xt) ? 1 : 0;
60
- });
67
+ xt.tuples.push(x);
68
+ yt.tuples.push(y);
61
69
 
62
- // SORT CONSTANT VALUES
63
- for (const constant of meta.constants)
64
- if (constant.type === "string") constant.values.sort();
65
- else if (constant.type === "number")
66
- constant.values.sort(
67
- (a, b) => (a.value as number) - (b.value as number),
68
- );
69
- else if (constant.type === "bigint")
70
- constant.values.sort((a, b) =>
71
- (a.value as bigint) < (b.value as bigint) ? -1 : 1,
72
- );
73
- else constant.values.sort((a, _b) => (a.value === false ? -1 : 1));
74
- };
70
+ return Metadata.covers(xt, yt) ? -1 : Metadata.covers(yt, xt) ? 1 : 0;
71
+ });
72
+
73
+ // SORT CONSTANT VALUES
74
+ for (const constant of props.metadata.constants)
75
+ if (constant.type === "string") constant.values.sort();
76
+ else if (constant.type === "number")
77
+ constant.values.sort((a, b) => (a.value as number) - (b.value as number));
78
+ else if (constant.type === "bigint")
79
+ constant.values.sort((a, b) =>
80
+ (a.value as bigint) < (b.value as bigint) ? -1 : 1,
81
+ );
82
+ else constant.values.sort((a, _b) => (a.value === false ? -1 : 1));
83
+ };
@@ -3,42 +3,40 @@ import ts from "typescript";
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
4
  import { MetadataTemplate } from "../../../schemas/metadata/MetadataTemplate";
5
5
 
6
- import { MetadataCollection } from "../../MetadataCollection";
7
- import { MetadataFactory } from "../../MetadataFactory";
6
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
8
7
  import { MetadataHelper } from "./MetadataHelper";
9
8
  import { explore_metadata } from "./explore_metadata";
10
9
 
11
- export const iterate_metadata_template =
12
- (checker: ts.TypeChecker) =>
13
- (options: MetadataFactory.IOptions) =>
14
- (collection: MetadataCollection) =>
15
- (errors: MetadataFactory.IError[]) =>
16
- (
17
- meta: Metadata,
18
- type: ts.Type,
19
- explore: MetadataFactory.IExplore,
20
- ): boolean => {
21
- const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
22
- if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
10
+ export const iterate_metadata_template = (
11
+ props: IMetadataIteratorProps,
12
+ ): boolean => {
13
+ const filter = (flag: ts.TypeFlags) => (props.type.getFlags() & flag) !== 0;
14
+ if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
23
15
 
24
- const template: ts.TemplateLiteralType = type as ts.TemplateLiteralType;
25
- const row: Metadata[] = [];
16
+ const template: ts.TemplateLiteralType = props.type as ts.TemplateLiteralType;
17
+ const row: Metadata[] = [];
26
18
 
27
- template.texts.forEach((text, i) => {
28
- // TEXT LITERAL TYPE
29
- if (text !== "") row.push(MetadataHelper.literal_to_metadata(text));
19
+ template.texts.forEach((text, i) => {
20
+ // TEXT LITERAL TYPE
21
+ if (text !== "") row.push(MetadataHelper.literal_to_metadata(text));
30
22
 
31
- // BINDED TEMPLATE TYPE
32
- const binded: ts.Type | undefined = template.types[i];
33
- if (binded)
34
- row.push(
35
- explore_metadata(checker)(options)(collection)(errors)(binded, {
36
- ...explore,
23
+ // BINDED TEMPLATE TYPE
24
+ const binded: ts.Type | undefined = template.types[i];
25
+ if (binded)
26
+ row.push(
27
+ explore_metadata({
28
+ ...props,
29
+ type: binded,
30
+ explore: {
31
+ ...props.explore,
37
32
  escaped: false,
38
33
  aliased: false,
39
- }),
40
- );
41
- });
42
- meta.templates.push(MetadataTemplate.create({ row, tags: undefined }));
43
- return true;
44
- };
34
+ },
35
+ }),
36
+ );
37
+ });
38
+ props.metadata.templates.push(
39
+ MetadataTemplate.create({ row, tags: undefined }),
40
+ );
41
+ return true;
42
+ };
@@ -1,37 +1,26 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
3
  import { MetadataTuple } from "../../../schemas/metadata/MetadataTuple";
5
4
  import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
6
5
 
7
6
  import { ArrayUtil } from "../../../utils/ArrayUtil";
8
7
 
9
- import { MetadataCollection } from "../../MetadataCollection";
10
- import { MetadataFactory } from "../../MetadataFactory";
8
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
11
9
  import { emplace_metadata_tuple } from "./emplace_metadata_tuple";
12
10
 
13
- export const iterate_metadata_tuple =
14
- (checker: ts.TypeChecker) =>
15
- (options: MetadataFactory.IOptions) =>
16
- (collection: MetadataCollection) =>
17
- (errors: MetadataFactory.IError[]) =>
18
- (
19
- meta: Metadata,
20
- type: ts.TupleType,
21
- explore: MetadataFactory.IExplore,
22
- ): boolean => {
23
- if (!checker.isTupleType(type)) return false;
11
+ export const iterate_metadata_tuple = (
12
+ props: IMetadataIteratorProps<ts.TupleType>,
13
+ ): boolean => {
14
+ if (!props.checker.isTupleType(props.type)) return false;
24
15
 
25
- const tupleType: MetadataTupleType = emplace_metadata_tuple(checker)(
26
- options,
27
- )(collection)(errors)(type, meta.nullable, explore);
28
- ArrayUtil.add(
29
- meta.tuples,
30
- MetadataTuple.create({
31
- type: tupleType,
32
- tags: [],
33
- }),
34
- (elem) => elem.type.name === tupleType.name,
35
- );
36
- return true;
37
- };
16
+ const tupleType: MetadataTupleType = emplace_metadata_tuple(props);
17
+ ArrayUtil.add(
18
+ props.metadata.tuples,
19
+ MetadataTuple.create({
20
+ type: tupleType,
21
+ tags: [],
22
+ }),
23
+ (elem) => elem.type.name === tupleType.name,
24
+ );
25
+ return true;
26
+ };
@@ -1,27 +1,19 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
-
5
- import { MetadataCollection } from "../../MetadataCollection";
6
- import { MetadataFactory } from "../../MetadataFactory";
1
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
7
2
  import { iterate_metadata } from "./iterate_metadata";
8
3
 
9
- export const iterate_metadata_union =
10
- (checker: ts.TypeChecker) =>
11
- (options: MetadataFactory.IOptions) =>
12
- (collection: MetadataCollection) =>
13
- (errors: MetadataFactory.IError[]) =>
14
- (
15
- meta: Metadata,
16
- type: ts.Type,
17
- explore: MetadataFactory.IExplore,
18
- ): boolean => {
19
- if (!type.isUnion()) return false;
20
- type.types.forEach((t) =>
21
- iterate_metadata(checker)(options)(collection)(errors)(meta, t, {
22
- ...explore,
4
+ export const iterate_metadata_union = (
5
+ props: IMetadataIteratorProps,
6
+ ): boolean => {
7
+ if (!props.type.isUnion()) return false;
8
+ props.type.types.forEach((t) =>
9
+ iterate_metadata({
10
+ ...props,
11
+ type: t,
12
+ explore: {
13
+ ...props.explore,
23
14
  aliased: false,
24
- }),
25
- );
26
- return true;
27
- };
15
+ },
16
+ }),
17
+ );
18
+ return true;
19
+ };
@@ -222,14 +222,17 @@ export namespace CheckerProgrammer {
222
222
  prefix: config.prefix,
223
223
  initializer: (project) => (importer) => (type) => {
224
224
  const collection: MetadataCollection = new MetadataCollection();
225
- const result = MetadataFactory.analyze(
226
- project.checker,
227
- project.transformer,
228
- )({
229
- escape: false,
230
- constant: true,
231
- absorb: true,
232
- })(collection)(type);
225
+ const result = MetadataFactory.analyze({
226
+ checker: project.checker,
227
+ transformer: project.transformer,
228
+ options: {
229
+ escape: false,
230
+ constant: true,
231
+ absorb: true,
232
+ },
233
+ collection,
234
+ type,
235
+ });
233
236
  if (result.success === false)
234
237
  throw TransformerError.from(`typia.${importer.method}`)(
235
238
  result.errors,
@@ -49,22 +49,25 @@ export namespace RandomProgrammer {
49
49
  props: IDecomposeProps,
50
50
  ): FeatureProgrammer.IDecomposed => {
51
51
  const collection: MetadataCollection = new MetadataCollection();
52
- const result = MetadataFactory.analyze(
53
- props.context.checker,
54
- props.context.transformer,
55
- )({
56
- escape: false,
57
- constant: true,
58
- absorb: true,
59
- validate: (meta) => {
60
- const output: string[] = [];
61
- if (meta.natives.some((n) => n === "WeakSet"))
62
- output.push(`WeakSet is not supported.`);
63
- else if (meta.natives.some((n) => n === "WeakMap"))
64
- output.push(`WeakMap is not supported.`);
65
- return output;
52
+ const result = MetadataFactory.analyze({
53
+ checker: props.context.checker,
54
+ transformer: props.context.transformer,
55
+ options: {
56
+ escape: false,
57
+ constant: true,
58
+ absorb: true,
59
+ validate: (meta) => {
60
+ const output: string[] = [];
61
+ if (meta.natives.some((n) => n === "WeakSet"))
62
+ output.push(`WeakSet is not supported.`);
63
+ else if (meta.natives.some((n) => n === "WeakMap"))
64
+ output.push(`WeakMap is not supported.`);
65
+ return output;
66
+ },
66
67
  },
67
- })(collection)(props.type);
68
+ collection,
69
+ type: props.type,
70
+ });
68
71
  if (result.success === false)
69
72
  throw TransformerError.from(`typia.${props.importer.method}`)(
70
73
  result.errors,
@@ -32,15 +32,18 @@ export namespace HttpFormDataProgrammer {
32
32
  }): FeatureProgrammer.IDecomposed => {
33
33
  // ANALYZE TYPE
34
34
  const collection: MetadataCollection = new MetadataCollection();
35
- const result = MetadataFactory.analyze(
36
- props.context.checker,
37
- props.context.transformer,
38
- )({
39
- escape: false,
40
- constant: true,
41
- absorb: true,
42
- validate,
43
- })(collection)(props.type);
35
+ const result = MetadataFactory.analyze({
36
+ checker: props.context.checker,
37
+ transformer: props.context.transformer,
38
+ options: {
39
+ escape: false,
40
+ constant: true,
41
+ absorb: true,
42
+ validate,
43
+ },
44
+ collection,
45
+ type: props.type,
46
+ });
44
47
  if (result.success === false)
45
48
  throw TransformerError.from(`typia.http.${props.importer.method}`)(
46
49
  result.errors,
@@ -36,15 +36,18 @@ export namespace HttpHeadersProgrammer {
36
36
  }): FeatureProgrammer.IDecomposed => {
37
37
  // ANALYZE TYPE
38
38
  const collection: MetadataCollection = new MetadataCollection();
39
- const result = MetadataFactory.analyze(
40
- props.context.checker,
41
- props.context.transformer,
42
- )({
43
- escape: false,
44
- constant: true,
45
- absorb: true,
46
- validate,
47
- })(collection)(props.type);
39
+ const result = MetadataFactory.analyze({
40
+ checker: props.context.checker,
41
+ transformer: props.context.transformer,
42
+ options: {
43
+ escape: false,
44
+ constant: true,
45
+ absorb: true,
46
+ validate,
47
+ },
48
+ collection,
49
+ type: props.type,
50
+ });
48
51
  if (result.success === false)
49
52
  throw TransformerError.from(`typia.http.${props.importer.method}`)(
50
53
  result.errors,
@@ -17,15 +17,18 @@ import { HttpMetadataUtil } from "../helpers/HttpMetadataUtil";
17
17
 
18
18
  export namespace HttpParameterProgrammer {
19
19
  export const write = (props: IProgrammerProps): ts.ArrowFunction => {
20
- const result = MetadataFactory.analyze(
21
- props.context.checker,
22
- props.context.transformer,
23
- )({
24
- escape: false,
25
- constant: true,
26
- absorb: true,
27
- validate,
28
- })(new MetadataCollection())(props.type);
20
+ const result = MetadataFactory.analyze({
21
+ checker: props.context.checker,
22
+ transformer: props.context.transformer,
23
+ options: {
24
+ escape: false,
25
+ constant: true,
26
+ absorb: true,
27
+ validate,
28
+ },
29
+ collection: new MetadataCollection(),
30
+ type: props.type,
31
+ });
29
32
  if (result.success === false)
30
33
  throw TransformerError.from(props.modulo.getText())(result.errors);
31
34
 
@@ -39,15 +39,19 @@ export namespace HttpQueryProgrammer {
39
39
  }): FeatureProgrammer.IDecomposed => {
40
40
  // ANALYZE TYPE
41
41
  const collection: MetadataCollection = new MetadataCollection();
42
- const result = MetadataFactory.analyze(
43
- props.context.checker,
44
- props.context.transformer,
45
- )({
46
- escape: false,
47
- constant: true,
48
- absorb: true,
49
- validate: (meta, explore) => validate(meta, explore, props.allowOptional),
50
- })(collection)(props.type);
42
+ const result = MetadataFactory.analyze({
43
+ checker: props.context.checker,
44
+ transformer: props.context.transformer,
45
+ options: {
46
+ escape: false,
47
+ constant: true,
48
+ absorb: true,
49
+ validate: (meta, explore) =>
50
+ validate(meta, explore, props.allowOptional),
51
+ },
52
+ collection,
53
+ type: props.type,
54
+ });
51
55
  if (result.success === false)
52
56
  throw TransformerError.from(`typia.http.${props.importer.method}`)(
53
57
  result.errors,
@@ -871,10 +871,12 @@ export namespace JsonStringifyProgrammer {
871
871
 
872
872
  const initializer: FeatureProgrammer.IConfig["initializer"] =
873
873
  (project) => (importer) => (type) =>
874
- JsonMetadataFactory.analyze(`typia.json.${importer.method}`)(
875
- project.checker,
876
- project.transformer,
877
- )(type);
874
+ JsonMetadataFactory.analyze({
875
+ method: `typia.json.${importer.method}`,
876
+ checker: project.checker,
877
+ transformer: project.transformer,
878
+ type,
879
+ });
878
880
 
879
881
  const create_throw_error =
880
882
  (importer: FunctionImporter) =>
@@ -722,22 +722,25 @@ export namespace MiscCloneProgrammer {
722
722
  const initializer: FeatureProgrammer.IConfig["initializer"] =
723
723
  (project) => (importer) => (type) => {
724
724
  const collection = new MetadataCollection();
725
- const result = MetadataFactory.analyze(
726
- project.checker,
727
- project.transformer,
728
- )({
729
- escape: false,
730
- constant: true,
731
- absorb: true,
732
- validate: (meta) => {
733
- const output: string[] = [];
734
- if (meta.natives.some((n) => n === "WeakSet"))
735
- output.push("unable to clone WeakSet");
736
- else if (meta.natives.some((n) => n === "WeakMap"))
737
- output.push("unable to clone WeakMap");
738
- return output;
725
+ const result = MetadataFactory.analyze({
726
+ checker: project.checker,
727
+ transformer: project.transformer,
728
+ options: {
729
+ escape: false,
730
+ constant: true,
731
+ absorb: true,
732
+ validate: (meta) => {
733
+ const output: string[] = [];
734
+ if (meta.natives.some((n) => n === "WeakSet"))
735
+ output.push("unable to clone WeakSet");
736
+ else if (meta.natives.some((n) => n === "WeakMap"))
737
+ output.push("unable to clone WeakMap");
738
+ return output;
739
+ },
739
740
  },
740
- })(collection)(type);
741
+ collection,
742
+ type,
743
+ });
741
744
  if (result.success === false)
742
745
  throw TransformerError.from(`typia.misc.${importer.method}`)(
743
746
  result.errors,