typia 3.8.2 → 3.8.3-dev.20230429

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 (173) hide show
  1. package/README.md +1 -1
  2. package/lib/Primitive.d.ts +10 -10
  3. package/lib/factories/MetadataFactory.d.ts +1 -1
  4. package/lib/factories/MetadataFactory.js +1 -1
  5. package/lib/factories/MetadataFactory.js.map +1 -1
  6. package/lib/factories/internal/metadata/emplace_metadata_object.js +3 -1
  7. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  8. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +2 -0
  9. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  10. package/lib/metadata/IMetadata.d.ts +1 -0
  11. package/lib/metadata/Metadata.d.ts +1 -0
  12. package/lib/metadata/Metadata.js +5 -0
  13. package/lib/metadata/Metadata.js.map +1 -1
  14. package/lib/programmers/CheckerProgrammer.js +17 -6
  15. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  16. package/lib/programmers/internal/application_object.js +1 -0
  17. package/lib/programmers/internal/application_object.js.map +1 -1
  18. package/lib/programmers/internal/application_tuple.js +1 -1
  19. package/lib/programmers/internal/application_tuple.js.map +1 -1
  20. package/lib/schemas/IJsonSchema.d.ts +1 -0
  21. package/package.json +1 -1
  22. package/src/Primitive.ts +123 -120
  23. package/src/executable/TypiaGenerateWizard.ts +85 -85
  24. package/src/executable/TypiaSetupWizard.ts +133 -133
  25. package/src/executable/setup/CommandExecutor.ts +8 -8
  26. package/src/executable/setup/PackageManager.ts +71 -71
  27. package/src/executable/typia.ts +52 -52
  28. package/src/factories/CommentFactory.ts +14 -14
  29. package/src/factories/ExpressionFactory.ts +70 -70
  30. package/src/factories/IdentifierFactory.ts +63 -63
  31. package/src/factories/LiteralFactory.ts +39 -39
  32. package/src/factories/MetadataCollection.ts +121 -121
  33. package/src/factories/MetadataFactory.ts +62 -62
  34. package/src/factories/MetadataTagFactory.ts +297 -297
  35. package/src/factories/StatementFactory.ts +24 -24
  36. package/src/factories/TemplateFactory.ts +58 -58
  37. package/src/factories/TypeFactory.ts +124 -124
  38. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  39. package/src/factories/internal/metadata/emplace_metadata_object.ts +143 -140
  40. package/src/factories/internal/metadata/iterate_metadata.ts +67 -67
  41. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  42. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  43. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  44. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  45. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +48 -44
  46. package/src/factories/internal/metadata/iterate_metadata_union.ts +57 -57
  47. package/src/functional/$any.ts +2 -2
  48. package/src/functional/$is_between.ts +2 -2
  49. package/src/functional/$is_custom.ts +14 -14
  50. package/src/functional/$is_date.ts +3 -3
  51. package/src/functional/$is_datetime.ts +2 -2
  52. package/src/functional/$is_email.ts +4 -4
  53. package/src/functional/$is_ipv4.ts +4 -4
  54. package/src/functional/$is_ipv6.ts +4 -4
  55. package/src/functional/$is_url.ts +4 -4
  56. package/src/functional/$is_uuid.ts +4 -4
  57. package/src/functional/$join.ts +46 -46
  58. package/src/functional/$number.ts +12 -12
  59. package/src/functional/$rest.ts +3 -3
  60. package/src/functional/$string.ts +37 -37
  61. package/src/functional/$tail.ts +5 -5
  62. package/src/metadata/IMetadata.ts +1 -0
  63. package/src/metadata/Metadata.ts +539 -533
  64. package/src/metadata/MetadataConstant.ts +3 -3
  65. package/src/metadata/MetadataObject.ts +127 -127
  66. package/src/module.ts +2043 -2043
  67. package/src/programmers/ApplicationProgrammer.ts +62 -62
  68. package/src/programmers/AssertCloneProgrammer.ts +79 -79
  69. package/src/programmers/AssertParseProgrammer.ts +74 -74
  70. package/src/programmers/AssertProgrammer.ts +285 -285
  71. package/src/programmers/AssertPruneProgrammer.ts +76 -76
  72. package/src/programmers/AssertStringifyProgrammer.ts +74 -74
  73. package/src/programmers/CheckerProgrammer.ts +901 -875
  74. package/src/programmers/CloneProgrammer.ts +389 -389
  75. package/src/programmers/FeatureProgrammer.ts +500 -500
  76. package/src/programmers/IsCloneProgrammer.ts +86 -86
  77. package/src/programmers/IsParseProgrammer.ts +80 -80
  78. package/src/programmers/IsProgrammer.ts +212 -212
  79. package/src/programmers/IsPruneProgrammer.ts +81 -81
  80. package/src/programmers/IsStringifyProgrammer.ts +84 -84
  81. package/src/programmers/LiteralsProgrammer.ts +65 -65
  82. package/src/programmers/PruneProgrammer.ts +347 -347
  83. package/src/programmers/RandomProgrammer.ts +423 -423
  84. package/src/programmers/StringifyProgrammer.ts +798 -798
  85. package/src/programmers/TypiaProgrammer.ts +129 -129
  86. package/src/programmers/ValidateCloneProgrammer.ts +93 -93
  87. package/src/programmers/ValidateParseProgrammer.ts +78 -78
  88. package/src/programmers/ValidateProgrammer.ts +316 -316
  89. package/src/programmers/ValidatePruneProgrammer.ts +86 -86
  90. package/src/programmers/ValidateStringifyProgrammer.ts +92 -92
  91. package/src/programmers/helpers/CloneJoiner.ts +131 -131
  92. package/src/programmers/helpers/FunctionImporeter.ts +54 -54
  93. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  94. package/src/programmers/helpers/PruneJoiner.ts +144 -144
  95. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  96. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  97. package/src/programmers/helpers/UnionExplorer.ts +275 -275
  98. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  99. package/src/programmers/internal/application_array.ts +36 -36
  100. package/src/programmers/internal/application_boolean.ts +17 -17
  101. package/src/programmers/internal/application_constant.ts +30 -30
  102. package/src/programmers/internal/application_default_string.ts +33 -33
  103. package/src/programmers/internal/application_native.ts +32 -32
  104. package/src/programmers/internal/application_number.ts +73 -73
  105. package/src/programmers/internal/application_object.ts +155 -154
  106. package/src/programmers/internal/application_schema.ts +213 -213
  107. package/src/programmers/internal/application_string.ts +45 -45
  108. package/src/programmers/internal/application_templates.ts +26 -26
  109. package/src/programmers/internal/application_tuple.ts +31 -29
  110. package/src/programmers/internal/check_array.ts +30 -30
  111. package/src/programmers/internal/check_custom.ts +31 -31
  112. package/src/programmers/internal/check_dynamic_properties.ts +194 -194
  113. package/src/programmers/internal/check_everything.ts +28 -28
  114. package/src/programmers/internal/check_native.ts +21 -21
  115. package/src/programmers/internal/check_string_tags.ts +67 -67
  116. package/src/programmers/internal/check_union_array_like.ts +271 -271
  117. package/src/programmers/internal/check_union_tuple.ts +33 -33
  118. package/src/programmers/internal/random_custom.ts +29 -29
  119. package/src/programmers/internal/stringify_dynamic_properties.ts +167 -167
  120. package/src/programmers/internal/stringify_native.ts +7 -7
  121. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  122. package/src/schemas/IJsonSchema.ts +130 -129
  123. package/src/transform.ts +17 -17
  124. package/src/transformers/CallExpressionTransformer.ts +177 -177
  125. package/src/transformers/FileTransformer.ts +47 -47
  126. package/src/transformers/NodeTransformer.ts +13 -13
  127. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +114 -114
  128. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  129. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  130. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  131. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  132. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  133. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  134. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  135. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  136. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  137. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +39 -39
  138. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  139. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  140. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  141. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  142. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +28 -28
  143. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +52 -52
  144. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  145. package/src/transformers/features/miscellaneous/RandomTransformer.ts +42 -42
  146. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  147. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  148. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  149. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  150. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  151. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  152. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  153. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  154. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  155. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +12 -12
  156. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  157. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  158. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +12 -12
  159. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  160. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  161. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  162. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  163. package/src/transformers/features/validators/CreateAssertTransformer.ts +13 -13
  164. package/src/transformers/features/validators/CreateIsTransformer.ts +11 -11
  165. package/src/transformers/features/validators/CreateValidateTransformer.ts +13 -13
  166. package/src/transformers/features/validators/IsTransformer.ts +11 -11
  167. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  168. package/src/transformers/internal/GenericTransformer.ts +97 -97
  169. package/src/utils/ArrayUtil.ts +44 -44
  170. package/src/utils/Escaper.ts +45 -45
  171. package/src/utils/MapUtil.ts +12 -12
  172. package/src/utils/PatternUtil.ts +30 -30
  173. package/src/utils/RandomGenerator.ts +81 -81
@@ -1,140 +1,143 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataObject } from "../../../metadata/MetadataObject";
5
- import { MetadataProperty } from "../../../metadata/MetadataProperty";
6
-
7
- import { Writable } from "../../../typings/Writable";
8
-
9
- import { ArrayUtil } from "../../../utils/ArrayUtil";
10
-
11
- import { CommentFactory } from "../../CommentFactory";
12
- import { MetadataCollection } from "../../MetadataCollection";
13
- import { MetadataFactory } from "../../MetadataFactory";
14
- import { MetadataTagFactory } from "../../MetadataTagFactory";
15
- import { MetadataHelper } from "./MetadataHelper";
16
- import { explore_metadata } from "./explore_metadata";
17
-
18
- export const emplace_metadata_object =
19
- (checker: ts.TypeChecker) =>
20
- (options: MetadataFactory.IOptions) =>
21
- (collection: MetadataCollection) =>
22
- (parent: ts.Type, nullable: boolean): MetadataObject => {
23
- // EMPLACE OBJECT
24
- const [obj, newbie] = collection.emplace(checker, parent);
25
- ArrayUtil.add(obj.nullables, nullable, (elem) => elem === nullable);
26
- if (newbie === false) return obj;
27
-
28
- // PREPARE ASSETS
29
- const isClass: boolean = parent.isClass();
30
- const pred: (node: ts.Declaration) => boolean = isClass
31
- ? (node) => {
32
- const kind: ts.SyntaxKind | undefined = node
33
- .getChildren()[0]
34
- ?.getChildren()[0]?.kind;
35
- return (
36
- kind !== ts.SyntaxKind.PrivateKeyword &&
37
- kind !== ts.SyntaxKind.ProtectedKeyword &&
38
- (ts.isParameter(node) || isProperty(node))
39
- );
40
- }
41
- : (node) => isProperty(node);
42
-
43
- const insert =
44
- (key: Metadata) =>
45
- (value: Metadata) =>
46
- (identifier: () => string) =>
47
- (
48
- symbol: ts.Symbol | undefined,
49
- filter?: (doc: ts.JSDocTagInfo) => boolean,
50
- ): MetadataProperty => {
51
- // COMMENTS AND TAGS
52
- const description: string | undefined =
53
- CommentFactory.string(
54
- symbol?.getDocumentationComment(checker) || [],
55
- ) || undefined;
56
- const jsDocTags: ts.JSDocTagInfo[] = (
57
- symbol?.getJsDocTags() || []
58
- ).filter(filter || (() => true));
59
-
60
- // THE PROPERTY
61
- const property = MetadataProperty.create({
62
- key,
63
- value,
64
- description,
65
- jsDocTags,
66
- tags: MetadataTagFactory.generate(value)(jsDocTags)(() =>
67
- identifier(),
68
- ),
69
- });
70
- obj.properties.push(property);
71
- return property;
72
- };
73
-
74
- //----
75
- // REGULAR PROPERTIES
76
- //----
77
- for (const prop of parent.getApparentProperties()) {
78
- // CHECK INTERNAL TAG
79
- if (
80
- (prop.getJsDocTags(checker) || []).find(
81
- (tag) => tag.name === "internal",
82
- ) !== undefined
83
- )
84
- continue;
85
-
86
- // CHECK NODE IS A FORMAL PROPERTY
87
- const [node, type] = (() => {
88
- const node = (prop.getDeclarations() || [])[0] as
89
- | ts.PropertyDeclaration
90
- | undefined;
91
- const type: ts.Type | undefined = node
92
- ? checker.getTypeOfSymbolAtLocation(prop, node)
93
- : "getTypeOfPropertyOfType" in checker
94
- ? (checker as any).getTypeOfPropertyOfType(
95
- parent,
96
- prop.name,
97
- )
98
- : undefined;
99
- return [node, type];
100
- })();
101
- if ((node && pred(node) === false) || type === undefined) continue;
102
-
103
- // GET EXACT TYPE
104
- const key: Metadata = MetadataHelper.literal_to_metadata(prop.name);
105
- const value: Metadata = explore_metadata(checker)(options)(
106
- collection,
107
- )(type, false);
108
-
109
- // INSERT WITH REQUIRED CONFIGURATION
110
- if (node?.questionToken) Writable(value).required = false;
111
- insert(key)(value)(() => `${obj.name}.${prop.name}`)(prop);
112
- }
113
-
114
- //----
115
- // DYNAMIC PROPERTIES
116
- //----
117
- for (const index of checker.getIndexInfosOfType(parent)) {
118
- // GET EXACT TYPE
119
- const analyzer = (type: ts.Type) =>
120
- explore_metadata(checker)(options)(collection)(type, false);
121
- const key: Metadata = analyzer(index.keyType);
122
- const value: Metadata = analyzer(index.type);
123
-
124
- // INSERT WITH REQUIRED CONFIGURATION
125
- insert(key)(value)(() => `${obj.name}[${key.getName()}]`)(
126
- index.declaration?.parent
127
- ? checker.getSymbolAtLocation(index.declaration.parent)
128
- : undefined,
129
- (doc) => doc.name !== "default",
130
- );
131
- }
132
-
133
- return obj;
134
- };
135
-
136
- const isProperty = (node: ts.Declaration) =>
137
- ts.isPropertyDeclaration(node) ||
138
- ts.isPropertyAssignment(node) ||
139
- ts.isPropertySignature(node) ||
140
- ts.isTypeLiteralNode(node);
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataObject } from "../../../metadata/MetadataObject";
5
+ import { MetadataProperty } from "../../../metadata/MetadataProperty";
6
+
7
+ import { Writable } from "../../../typings/Writable";
8
+
9
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
10
+
11
+ import { CommentFactory } from "../../CommentFactory";
12
+ import { MetadataCollection } from "../../MetadataCollection";
13
+ import { MetadataFactory } from "../../MetadataFactory";
14
+ import { MetadataTagFactory } from "../../MetadataTagFactory";
15
+ import { MetadataHelper } from "./MetadataHelper";
16
+ import { explore_metadata } from "./explore_metadata";
17
+
18
+ export const emplace_metadata_object =
19
+ (checker: ts.TypeChecker) =>
20
+ (options: MetadataFactory.IOptions) =>
21
+ (collection: MetadataCollection) =>
22
+ (parent: ts.Type, nullable: boolean): MetadataObject => {
23
+ // EMPLACE OBJECT
24
+ const [obj, newbie] = collection.emplace(checker, parent);
25
+ ArrayUtil.add(obj.nullables, nullable, (elem) => elem === nullable);
26
+ if (newbie === false) return obj;
27
+
28
+ // PREPARE ASSETS
29
+ const isClass: boolean = parent.isClass();
30
+ const pred: (node: ts.Declaration) => boolean = isClass
31
+ ? (node) => {
32
+ const kind: ts.SyntaxKind | undefined = node
33
+ .getChildren()[0]
34
+ ?.getChildren()[0]?.kind;
35
+ return (
36
+ kind !== ts.SyntaxKind.PrivateKeyword &&
37
+ kind !== ts.SyntaxKind.ProtectedKeyword &&
38
+ (ts.isParameter(node) || isProperty(node))
39
+ );
40
+ }
41
+ : (node) => isProperty(node);
42
+
43
+ const insert =
44
+ (key: Metadata) =>
45
+ (value: Metadata) =>
46
+ (identifier: () => string) =>
47
+ (
48
+ symbol: ts.Symbol | undefined,
49
+ filter?: (doc: ts.JSDocTagInfo) => boolean,
50
+ ): MetadataProperty => {
51
+ // COMMENTS AND TAGS
52
+ const description: string | undefined =
53
+ CommentFactory.string(
54
+ symbol?.getDocumentationComment(checker) || [],
55
+ ) || undefined;
56
+ const jsDocTags: ts.JSDocTagInfo[] = (
57
+ symbol?.getJsDocTags() || []
58
+ ).filter(filter || (() => true));
59
+
60
+ // THE PROPERTY
61
+ const property = MetadataProperty.create({
62
+ key,
63
+ value,
64
+ description,
65
+ jsDocTags,
66
+ tags: MetadataTagFactory.generate(value)(jsDocTags)(() =>
67
+ identifier(),
68
+ ),
69
+ });
70
+ obj.properties.push(property);
71
+ return property;
72
+ };
73
+
74
+ //----
75
+ // REGULAR PROPERTIES
76
+ //----
77
+ for (const prop of parent.getApparentProperties()) {
78
+ // CHECK INTERNAL TAG
79
+ if (
80
+ (prop.getJsDocTags(checker) || []).find(
81
+ (tag) => tag.name === "internal",
82
+ ) !== undefined
83
+ )
84
+ continue;
85
+
86
+ // CHECK NODE IS A FORMAL PROPERTY
87
+ const [node, type] = (() => {
88
+ const node = (prop.getDeclarations() || [])[0] as
89
+ | ts.PropertyDeclaration
90
+ | undefined;
91
+ const type: ts.Type | undefined = node
92
+ ? checker.getTypeOfSymbolAtLocation(prop, node)
93
+ : "getTypeOfPropertyOfType" in checker
94
+ ? (checker as any).getTypeOfPropertyOfType(
95
+ parent,
96
+ prop.name,
97
+ )
98
+ : undefined;
99
+ return [node, type];
100
+ })();
101
+ if ((node && pred(node) === false) || type === undefined) continue;
102
+
103
+ // GET EXACT TYPE
104
+ const key: Metadata = MetadataHelper.literal_to_metadata(prop.name);
105
+ const value: Metadata = explore_metadata(checker)(options)(
106
+ collection,
107
+ )(type, false);
108
+
109
+ // INSERT WITH REQUIRED CONFIGURATION
110
+ if (node?.questionToken) {
111
+ Writable(value).required = false;
112
+ Writable(value).optional = true;
113
+ }
114
+ insert(key)(value)(() => `${obj.name}.${prop.name}`)(prop);
115
+ }
116
+
117
+ //----
118
+ // DYNAMIC PROPERTIES
119
+ //----
120
+ for (const index of checker.getIndexInfosOfType(parent)) {
121
+ // GET EXACT TYPE
122
+ const analyzer = (type: ts.Type) =>
123
+ explore_metadata(checker)(options)(collection)(type, false);
124
+ const key: Metadata = analyzer(index.keyType);
125
+ const value: Metadata = analyzer(index.type);
126
+
127
+ // INSERT WITH REQUIRED CONFIGURATION
128
+ insert(key)(value)(() => `${obj.name}[${key.getName()}]`)(
129
+ index.declaration?.parent
130
+ ? checker.getSymbolAtLocation(index.declaration.parent)
131
+ : undefined,
132
+ (doc) => doc.name !== "default",
133
+ );
134
+ }
135
+
136
+ return obj;
137
+ };
138
+
139
+ const isProperty = (node: ts.Declaration) =>
140
+ ts.isPropertyDeclaration(node) ||
141
+ ts.isPropertyAssignment(node) ||
142
+ ts.isPropertySignature(node) ||
143
+ ts.isTypeLiteralNode(node);
@@ -1,67 +1,67 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
- import { MetadataCollection } from "../../MetadataCollection";
7
- import { MetadataFactory } from "../../MetadataFactory";
8
- import { iterate_metadata_array } from "./iterate_metadata_array";
9
- import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
10
- import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
11
- import { iterate_metadata_constant } from "./iterate_metadata_constant";
12
- import { iterate_metadata_map } from "./iterate_metadata_map";
13
- import { iterate_metadata_native } from "./iterate_metadata_native";
14
- import { iterate_metadata_object } from "./iterate_metadata_object";
15
- import { iterate_metadata_resolve } from "./iterate_metadata_resolve";
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 =
22
- (checker: ts.TypeChecker) =>
23
- (options: MetadataFactory.IOptions) =>
24
- (collection: MetadataCollection) =>
25
- (meta: Metadata, type: ts.Type, parentResolved: boolean): void => {
26
- if (type.isTypeParameter() === true)
27
- throw new Error(
28
- `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
29
- );
30
-
31
- // CHECK UNION & toJSON()
32
- if (
33
- iterate_metadata_union(checker)(options)(collection)(
34
- meta,
35
- type,
36
- parentResolved,
37
- ) ||
38
- iterate_metadata_resolve(checker)(options)(collection)(
39
- meta,
40
- type,
41
- parentResolved,
42
- )
43
- )
44
- return;
45
-
46
- // ITERATE CASES
47
- iterate_metadata_coalesce(meta, type) ||
48
- iterate_metadata_constant(checker)(options)(meta, type) ||
49
- iterate_metadata_template(checker)(options)(collection)(
50
- meta,
51
- type,
52
- ) ||
53
- iterate_metadata_atomic(meta, type) ||
54
- iterate_metadata_tuple(checker)(options)(collection)(
55
- meta,
56
- type as ts.TupleType,
57
- ) ||
58
- iterate_metadata_array(checker)(options)(collection)(meta, type) ||
59
- iterate_metadata_native(checker)(meta, type) ||
60
- iterate_metadata_map(checker)(options)(collection)(meta, type) ||
61
- iterate_metadata_set(checker)(options)(collection)(meta, type) ||
62
- iterate_metadata_object(checker)(options)(collection)(
63
- meta,
64
- type,
65
- parentResolved,
66
- );
67
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+ import { MetadataCollection } from "../../MetadataCollection";
7
+ import { MetadataFactory } from "../../MetadataFactory";
8
+ import { iterate_metadata_array } from "./iterate_metadata_array";
9
+ import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
10
+ import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
11
+ import { iterate_metadata_constant } from "./iterate_metadata_constant";
12
+ import { iterate_metadata_map } from "./iterate_metadata_map";
13
+ import { iterate_metadata_native } from "./iterate_metadata_native";
14
+ import { iterate_metadata_object } from "./iterate_metadata_object";
15
+ import { iterate_metadata_resolve } from "./iterate_metadata_resolve";
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 =
22
+ (checker: ts.TypeChecker) =>
23
+ (options: MetadataFactory.IOptions) =>
24
+ (collection: MetadataCollection) =>
25
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): void => {
26
+ if (type.isTypeParameter() === true)
27
+ throw new Error(
28
+ `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
29
+ );
30
+
31
+ // CHECK UNION & toJSON()
32
+ if (
33
+ iterate_metadata_union(checker)(options)(collection)(
34
+ meta,
35
+ type,
36
+ parentResolved,
37
+ ) ||
38
+ iterate_metadata_resolve(checker)(options)(collection)(
39
+ meta,
40
+ type,
41
+ parentResolved,
42
+ )
43
+ )
44
+ return;
45
+
46
+ // ITERATE CASES
47
+ iterate_metadata_coalesce(meta, type) ||
48
+ iterate_metadata_constant(checker)(options)(meta, type) ||
49
+ iterate_metadata_template(checker)(options)(collection)(
50
+ meta,
51
+ type,
52
+ ) ||
53
+ iterate_metadata_atomic(meta, type) ||
54
+ iterate_metadata_tuple(checker)(options)(collection)(
55
+ meta,
56
+ type as ts.TupleType,
57
+ ) ||
58
+ iterate_metadata_array(checker)(options)(collection)(meta, type) ||
59
+ iterate_metadata_native(checker)(meta, type) ||
60
+ iterate_metadata_map(checker)(options)(collection)(meta, type) ||
61
+ iterate_metadata_set(checker)(options)(collection)(meta, type) ||
62
+ iterate_metadata_object(checker)(options)(collection)(
63
+ meta,
64
+ type,
65
+ parentResolved,
66
+ );
67
+ };
@@ -1,41 +1,41 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { ArrayUtil } from "../../../utils/ArrayUtil";
6
-
7
- import { MetadataCollection } from "../../MetadataCollection";
8
- import { MetadataFactory } from "../../MetadataFactory";
9
- import { TypeFactory } from "../../TypeFactory";
10
- import { explore_metadata } from "./explore_metadata";
11
-
12
- export const iterate_metadata_map =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
17
- type = checker.getApparentType(type);
18
-
19
- const name = TypeFactory.getFullName(checker)(type, type.getSymbol());
20
- const generic = type.aliasSymbol
21
- ? type.aliasTypeArguments
22
- : checker.getTypeArguments(type as ts.TypeReference);
23
- if (name.substring(0, 4) !== "Map<" || generic?.length !== 2)
24
- return false;
25
-
26
- const key: ts.Type = generic[0]!;
27
- const value: ts.Type = generic[1]!;
28
-
29
- ArrayUtil.set(
30
- meta.maps,
31
- {
32
- key: explore_metadata(checker)(options)(collection)(key, false),
33
- value: explore_metadata(checker)(options)(collection)(
34
- value,
35
- false,
36
- ),
37
- },
38
- (elem) => `Map<${elem.key.getName()}, ${elem.value.getName()}>`,
39
- );
40
- return true;
41
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+
7
+ import { MetadataCollection } from "../../MetadataCollection";
8
+ import { MetadataFactory } from "../../MetadataFactory";
9
+ import { TypeFactory } from "../../TypeFactory";
10
+ import { explore_metadata } from "./explore_metadata";
11
+
12
+ export const iterate_metadata_map =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type): boolean => {
17
+ type = checker.getApparentType(type);
18
+
19
+ const name = TypeFactory.getFullName(checker)(type, type.getSymbol());
20
+ const generic = type.aliasSymbol
21
+ ? type.aliasTypeArguments
22
+ : checker.getTypeArguments(type as ts.TypeReference);
23
+ if (name.substring(0, 4) !== "Map<" || generic?.length !== 2)
24
+ return false;
25
+
26
+ const key: ts.Type = generic[0]!;
27
+ const value: ts.Type = generic[1]!;
28
+
29
+ ArrayUtil.set(
30
+ meta.maps,
31
+ {
32
+ key: explore_metadata(checker)(options)(collection)(key, false),
33
+ value: explore_metadata(checker)(options)(collection)(
34
+ value,
35
+ false,
36
+ ),
37
+ },
38
+ (elem) => `Map<${elem.key.getName()}, ${elem.value.getName()}>`,
39
+ );
40
+ return true;
41
+ };