typia 4.1.8-dev.20230725 → 4.1.8-dev.20230726

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 (159) hide show
  1. package/package.json +1 -1
  2. package/src/factories/MetadataCollection.ts +255 -255
  3. package/src/factories/MetadataFactory.ts +30 -30
  4. package/src/factories/MetadataTagFactory.ts +355 -355
  5. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  6. package/src/factories/internal/metadata/emend_metadata_atomics.ts +33 -33
  7. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  8. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  9. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  10. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  11. package/src/factories/internal/metadata/explore_metadata.ts +40 -40
  12. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  13. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  14. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  15. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  16. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  17. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  18. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  19. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +83 -83
  20. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  21. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  22. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  23. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  24. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  25. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  26. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  27. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  28. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  29. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  30. package/src/functional/$number.ts +12 -12
  31. package/src/metadata/ICommentTag.ts +4 -4
  32. package/src/metadata/IJsDocTagInfo.ts +10 -10
  33. package/src/metadata/IMetadata.ts +28 -28
  34. package/src/metadata/IMetadataAlias.ts +14 -14
  35. package/src/metadata/IMetadataApplication.ts +7 -7
  36. package/src/metadata/IMetadataArray.ts +10 -10
  37. package/src/metadata/IMetadataCollection.ts +11 -11
  38. package/src/metadata/IMetadataConstant.ts +16 -16
  39. package/src/metadata/IMetadataDictionary.ts +14 -14
  40. package/src/metadata/IMetadataEntry.ts +6 -6
  41. package/src/metadata/IMetadataObject.ts +18 -18
  42. package/src/metadata/IMetadataProperty.ts +11 -11
  43. package/src/metadata/IMetadataResolved.ts +6 -6
  44. package/src/metadata/IMetadataTag.ts +105 -105
  45. package/src/metadata/IMetadataTuple.ts +10 -10
  46. package/src/metadata/Metadata.ts +605 -605
  47. package/src/metadata/MetadataAlias.ts +66 -66
  48. package/src/metadata/MetadataArray.ts +55 -55
  49. package/src/metadata/MetadataConstant.ts +3 -3
  50. package/src/metadata/MetadataObject.ts +129 -129
  51. package/src/metadata/MetadataProperty.ts +64 -64
  52. package/src/metadata/MetadataResolved.ts +51 -51
  53. package/src/metadata/MetadataTuple.ts +53 -53
  54. package/src/module.ts +2038 -2038
  55. package/src/programmers/ApplicationProgrammer.ts +47 -47
  56. package/src/programmers/AssertCloneProgrammer.ts +71 -71
  57. package/src/programmers/AssertParseProgrammer.ts +66 -66
  58. package/src/programmers/AssertPruneProgrammer.ts +68 -68
  59. package/src/programmers/AssertStringifyProgrammer.ts +66 -66
  60. package/src/programmers/CheckerProgrammer.ts +1182 -1182
  61. package/src/programmers/CloneProgrammer.ts +587 -587
  62. package/src/programmers/FeatureProgrammer.ts +495 -495
  63. package/src/programmers/IsCloneProgrammer.ts +78 -78
  64. package/src/programmers/IsParseProgrammer.ts +72 -72
  65. package/src/programmers/IsProgrammer.ts +239 -239
  66. package/src/programmers/IsPruneProgrammer.ts +73 -73
  67. package/src/programmers/IsStringifyProgrammer.ts +76 -76
  68. package/src/programmers/LiteralsProgrammer.ts +63 -63
  69. package/src/programmers/PruneProgrammer.ts +542 -542
  70. package/src/programmers/RandomProgrammer.ts +581 -581
  71. package/src/programmers/StringifyProgrammer.ts +978 -978
  72. package/src/programmers/ValidateCloneProgrammer.ts +85 -85
  73. package/src/programmers/ValidateParseProgrammer.ts +70 -70
  74. package/src/programmers/ValidatePruneProgrammer.ts +78 -78
  75. package/src/programmers/ValidateStringifyProgrammer.ts +84 -84
  76. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  77. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  78. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  79. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  80. package/src/programmers/helpers/RandomRanger.ts +216 -216
  81. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  82. package/src/programmers/helpers/UnionExplorer.ts +301 -301
  83. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  84. package/src/programmers/internal/application_alias.ts +66 -66
  85. package/src/programmers/internal/application_array.ts +30 -30
  86. package/src/programmers/internal/application_constant.ts +26 -26
  87. package/src/programmers/internal/application_default.ts +17 -17
  88. package/src/programmers/internal/application_default_string.ts +33 -33
  89. package/src/programmers/internal/application_native.ts +39 -39
  90. package/src/programmers/internal/application_number.ts +74 -74
  91. package/src/programmers/internal/application_object.ts +162 -162
  92. package/src/programmers/internal/application_resolved.ts +55 -55
  93. package/src/programmers/internal/application_schema.ts +157 -157
  94. package/src/programmers/internal/application_string.ts +44 -44
  95. package/src/programmers/internal/application_templates.ts +25 -25
  96. package/src/programmers/internal/application_tuple.ts +57 -57
  97. package/src/programmers/internal/check_array.ts +30 -30
  98. package/src/programmers/internal/check_array_length.ts +35 -35
  99. package/src/programmers/internal/check_bigint.ts +82 -82
  100. package/src/programmers/internal/check_custom.ts +31 -31
  101. package/src/programmers/internal/check_number.ts +177 -177
  102. package/src/programmers/internal/check_string.ts +25 -25
  103. package/src/programmers/internal/check_string_tags.ts +67 -67
  104. package/src/programmers/internal/check_template.ts +56 -56
  105. package/src/programmers/internal/check_union_array_like.ts +329 -329
  106. package/src/programmers/internal/decode_union_object.ts +73 -73
  107. package/src/programmers/internal/feature_object_entries.ts +63 -63
  108. package/src/programmers/internal/get_comment_tags.ts +23 -23
  109. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  110. package/src/programmers/internal/prune_object_properties.ts +60 -60
  111. package/src/programmers/internal/random_custom.ts +29 -29
  112. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  113. package/src/programmers/internal/template_to_pattern.ts +15 -15
  114. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  115. package/src/schemas/IJsonApplication.ts +8 -8
  116. package/src/schemas/IJsonComponents.ts +33 -33
  117. package/src/schemas/IJsonSchema.ts +133 -133
  118. package/src/transformers/CallExpressionTransformer.ts +179 -179
  119. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +104 -104
  120. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  121. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  122. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  123. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  124. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  125. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  126. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  127. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  128. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  129. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +39 -39
  130. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  131. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  132. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  133. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  134. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +28 -28
  135. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  136. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  137. package/src/transformers/features/miscellaneous/RandomTransformer.ts +42 -42
  138. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  139. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  140. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  141. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  142. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  143. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  144. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  145. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  146. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  147. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +12 -12
  148. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  149. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  150. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +12 -12
  151. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  152. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  153. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  154. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  155. package/src/transformers/features/validators/CreateAssertTransformer.ts +13 -13
  156. package/src/transformers/features/validators/CreateIsTransformer.ts +11 -11
  157. package/src/transformers/features/validators/CreateValidateTransformer.ts +13 -13
  158. package/src/transformers/features/validators/IsTransformer.ts +11 -11
  159. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
@@ -1,33 +1,33 @@
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_set =
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) !== "Set<" || generic?.length !== 1)
24
- return false;
25
-
26
- const key: ts.Type = generic[0]!;
27
- ArrayUtil.set(
28
- meta.sets,
29
- explore_metadata(checker)(options)(collection)(key, false),
30
- (elem) => elem.getName(),
31
- );
32
- return true;
33
- };
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_set =
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) !== "Set<" || generic?.length !== 1)
24
+ return false;
25
+
26
+ const key: ts.Type = generic[0]!;
27
+ ArrayUtil.set(
28
+ meta.sets,
29
+ explore_metadata(checker)(options)(collection)(key, false),
30
+ (elem) => elem.getName(),
31
+ );
32
+ return true;
33
+ };
@@ -1,69 +1,69 @@
1
- import { Metadata } from "../../../metadata/Metadata";
2
- import { MetadataObject } from "../../../metadata/MetadataObject";
3
-
4
- import { MetadataCollection } from "../../MetadataCollection";
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
- };
19
-
20
- const iterate =
21
- (visited: Set<Metadata>) =>
22
- (collection: MetadataCollection) =>
23
- (meta: Metadata) => {
24
- if (visited.has(meta)) return;
25
- visited.add(meta);
26
-
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.resolved !== null)
31
- iterate(visited)(collection)(meta.resolved.returns);
32
- if (meta.rest !== null) iterate(visited)(collection)(meta.rest);
33
-
34
- // SORT OBJECTS
35
- if (meta.objects.length > 1) {
36
- meta.objects.sort((x, y) =>
37
- MetadataObject.covers(x, y)
38
- ? -1
39
- : MetadataObject.covers(y, x)
40
- ? 1
41
- : 0,
42
- );
43
- meta.union_index = collection.getUnionIndex(meta);
44
- }
45
-
46
- // SORT ARRAYS AND TUPLES
47
- if (meta.arrays.length > 1)
48
- meta.arrays.sort((x, y) =>
49
- Metadata.covers(x.value, y.value)
50
- ? -1
51
- : Metadata.covers(y.value, x.value)
52
- ? 1
53
- : 0,
54
- );
55
- if (meta.tuples.length > 1)
56
- meta.tuples.sort((x, y) => {
57
- const xt = Metadata.initialize();
58
- const yt = Metadata.initialize();
59
-
60
- xt.tuples.push(x);
61
- yt.tuples.push(y);
62
-
63
- return Metadata.covers(xt, yt)
64
- ? -1
65
- : Metadata.covers(yt, xt)
66
- ? 1
67
- : 0;
68
- });
69
- };
1
+ import { Metadata } from "../../../metadata/Metadata";
2
+ import { MetadataObject } from "../../../metadata/MetadataObject";
3
+
4
+ import { MetadataCollection } from "../../MetadataCollection";
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
+ };
19
+
20
+ const iterate =
21
+ (visited: Set<Metadata>) =>
22
+ (collection: MetadataCollection) =>
23
+ (meta: Metadata) => {
24
+ if (visited.has(meta)) return;
25
+ visited.add(meta);
26
+
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.resolved !== null)
31
+ iterate(visited)(collection)(meta.resolved.returns);
32
+ if (meta.rest !== null) iterate(visited)(collection)(meta.rest);
33
+
34
+ // SORT OBJECTS
35
+ if (meta.objects.length > 1) {
36
+ meta.objects.sort((x, y) =>
37
+ MetadataObject.covers(x, y)
38
+ ? -1
39
+ : MetadataObject.covers(y, x)
40
+ ? 1
41
+ : 0,
42
+ );
43
+ meta.union_index = collection.getUnionIndex(meta);
44
+ }
45
+
46
+ // SORT ARRAYS AND TUPLES
47
+ if (meta.arrays.length > 1)
48
+ meta.arrays.sort((x, y) =>
49
+ Metadata.covers(x.value, y.value)
50
+ ? -1
51
+ : Metadata.covers(y.value, x.value)
52
+ ? 1
53
+ : 0,
54
+ );
55
+ if (meta.tuples.length > 1)
56
+ meta.tuples.sort((x, y) => {
57
+ const xt = Metadata.initialize();
58
+ const yt = Metadata.initialize();
59
+
60
+ xt.tuples.push(x);
61
+ yt.tuples.push(y);
62
+
63
+ return Metadata.covers(xt, yt)
64
+ ? -1
65
+ : Metadata.covers(yt, xt)
66
+ ? 1
67
+ : 0;
68
+ });
69
+ };
@@ -1,31 +1,31 @@
1
- import { MetadataObject } from "../../../metadata/MetadataObject";
2
-
3
- import { Writable } from "../../../typings/Writable";
4
-
5
- import { Escaper } from "../../../utils/Escaper";
6
-
7
- import { MetadataTagFactory } from "../../MetadataTagFactory";
8
-
9
- export const iterate_metadata_tag = (obj: MetadataObject) => {
10
- if (obj.tagged_ === true) return;
11
- obj.tagged_ = true;
12
-
13
- for (const prop of obj.properties) {
14
- const key: string = prop.key.getName();
15
- const variable: string | null =
16
- key.length >= 3 &&
17
- key[0] === '"' &&
18
- key[key.length - 1] === '"' &&
19
- Escaper.variable(key.slice(1, -1))
20
- ? key.slice(1, -1)
21
- : null;
22
-
23
- Writable(prop).tags = MetadataTagFactory.generate(prop.value)(
24
- prop.jsDocTags,
25
- )(
26
- variable !== null
27
- ? () => `${obj.name}.${variable}`
28
- : () => `${obj.name}[${key}]`,
29
- );
30
- }
31
- };
1
+ import { MetadataObject } from "../../../metadata/MetadataObject";
2
+
3
+ import { Writable } from "../../../typings/Writable";
4
+
5
+ import { Escaper } from "../../../utils/Escaper";
6
+
7
+ import { MetadataTagFactory } from "../../MetadataTagFactory";
8
+
9
+ export const iterate_metadata_tag = (obj: MetadataObject) => {
10
+ if (obj.tagged_ === true) return;
11
+ obj.tagged_ = true;
12
+
13
+ for (const prop of obj.properties) {
14
+ const key: string = prop.key.getName();
15
+ const variable: string | null =
16
+ key.length >= 3 &&
17
+ key[0] === '"' &&
18
+ key[key.length - 1] === '"' &&
19
+ Escaper.variable(key.slice(1, -1))
20
+ ? key.slice(1, -1)
21
+ : null;
22
+
23
+ Writable(prop).tags = MetadataTagFactory.generate(prop.value)(
24
+ prop.jsDocTags,
25
+ )(
26
+ variable !== null
27
+ ? () => `${obj.name}.${variable}`
28
+ : () => `${obj.name}[${key}]`,
29
+ );
30
+ }
31
+ };
@@ -1,38 +1,38 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { MetadataCollection } from "../../MetadataCollection";
6
- import { MetadataFactory } from "../../MetadataFactory";
7
- import { MetadataHelper } from "./MetadataHelper";
8
- import { explore_metadata } from "./explore_metadata";
9
-
10
- export const iterate_metadata_template =
11
- (checker: ts.TypeChecker) =>
12
- (options: MetadataFactory.IOptions) =>
13
- (collection: MetadataCollection) =>
14
- (meta: Metadata, type: ts.Type): boolean => {
15
- const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
16
- if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
17
-
18
- const template: ts.TemplateLiteralType = type as ts.TemplateLiteralType;
19
- const row: Metadata[] = [];
20
-
21
- template.texts.forEach((text, i) => {
22
- // TEXT LITERAL TYPE
23
- if (text !== "") row.push(MetadataHelper.literal_to_metadata(text));
24
-
25
- // BINDED TEMPLATE TYPE
26
- const binded: ts.Type | undefined = template.types[i];
27
- if (binded)
28
- row.push(
29
- explore_metadata(checker)(options)(collection)(
30
- binded,
31
- false,
32
- ),
33
- );
34
- });
35
- meta.templates.push(row);
36
-
37
- return true;
38
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { MetadataCollection } from "../../MetadataCollection";
6
+ import { MetadataFactory } from "../../MetadataFactory";
7
+ import { MetadataHelper } from "./MetadataHelper";
8
+ import { explore_metadata } from "./explore_metadata";
9
+
10
+ export const iterate_metadata_template =
11
+ (checker: ts.TypeChecker) =>
12
+ (options: MetadataFactory.IOptions) =>
13
+ (collection: MetadataCollection) =>
14
+ (meta: Metadata, type: ts.Type): boolean => {
15
+ const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
16
+ if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
17
+
18
+ const template: ts.TemplateLiteralType = type as ts.TemplateLiteralType;
19
+ const row: Metadata[] = [];
20
+
21
+ template.texts.forEach((text, i) => {
22
+ // TEXT LITERAL TYPE
23
+ if (text !== "") row.push(MetadataHelper.literal_to_metadata(text));
24
+
25
+ // BINDED TEMPLATE TYPE
26
+ const binded: ts.Type | undefined = template.types[i];
27
+ if (binded)
28
+ row.push(
29
+ explore_metadata(checker)(options)(collection)(
30
+ binded,
31
+ false,
32
+ ),
33
+ );
34
+ });
35
+ meta.templates.push(row);
36
+
37
+ return true;
38
+ };
@@ -1,24 +1,24 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_tuple } from "./emplace_metadata_tuple";
11
-
12
- export const iterate_metadata_tuple =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.TupleType): boolean => {
17
- if (!checker.isTupleType(type)) return false;
18
-
19
- const tuple: MetadataTuple = emplace_metadata_tuple(checker)(options)(
20
- collection,
21
- )(type, meta.nullable);
22
- ArrayUtil.add(meta.tuples, tuple, (elem) => elem.name === tuple.name);
23
- return true;
24
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_tuple } from "./emplace_metadata_tuple";
11
+
12
+ export const iterate_metadata_tuple =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.TupleType): boolean => {
17
+ if (!checker.isTupleType(type)) return false;
18
+
19
+ const tuple: MetadataTuple = emplace_metadata_tuple(checker)(options)(
20
+ collection,
21
+ )(type, meta.nullable);
22
+ ArrayUtil.add(meta.tuples, tuple, (elem) => elem.name === tuple.name);
23
+ return true;
24
+ };
@@ -1,24 +1,24 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { MetadataCollection } from "../../MetadataCollection";
6
- import { MetadataFactory } from "../../MetadataFactory";
7
- import { iterate_metadata } from "./iterate_metadata";
8
-
9
- export const iterate_metadata_union =
10
- (checker: ts.TypeChecker) =>
11
- (options: MetadataFactory.IOptions) =>
12
- (collection: MetadataCollection) =>
13
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
14
- if (!type.isUnion()) return false;
15
- type.types.forEach((t) =>
16
- iterate_metadata(checker)(options)(collection)(
17
- meta,
18
- t,
19
- parentResolved,
20
- false,
21
- ),
22
- );
23
- return true;
24
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { MetadataCollection } from "../../MetadataCollection";
6
+ import { MetadataFactory } from "../../MetadataFactory";
7
+ import { iterate_metadata } from "./iterate_metadata";
8
+
9
+ export const iterate_metadata_union =
10
+ (checker: ts.TypeChecker) =>
11
+ (options: MetadataFactory.IOptions) =>
12
+ (collection: MetadataCollection) =>
13
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
14
+ if (!type.isUnion()) return false;
15
+ type.types.forEach((t) =>
16
+ iterate_metadata(checker)(options)(collection)(
17
+ meta,
18
+ t,
19
+ parentResolved,
20
+ false,
21
+ ),
22
+ );
23
+ return true;
24
+ };
@@ -1,12 +1,12 @@
1
- import { TypeGuardError } from "../TypeGuardError";
2
-
3
- export const $number = (value: number): number => {
4
- if (isFinite(value) === false)
5
- throw new TypeGuardError({
6
- method: "typia.stringify",
7
- expected: "number",
8
- value,
9
- message: "Error on typia.stringify(): infinite or not a number.",
10
- });
11
- return value;
12
- };
1
+ import { TypeGuardError } from "../TypeGuardError";
2
+
3
+ export const $number = (value: number): number => {
4
+ if (isFinite(value) === false)
5
+ throw new TypeGuardError({
6
+ method: "typia.stringify",
7
+ expected: "number",
8
+ value,
9
+ message: "Error on typia.stringify(): infinite or not a number.",
10
+ });
11
+ return value;
12
+ };
@@ -1,4 +1,4 @@
1
- export interface ICommentTag {
2
- name: string;
3
- value?: string;
4
- }
1
+ export interface ICommentTag {
2
+ name: string;
3
+ value?: string;
4
+ }
@@ -1,10 +1,10 @@
1
- export interface IJsDocTagInfo {
2
- name: string;
3
- text?: IJsDocTagInfo.IText[];
4
- }
5
- export namespace IJsDocTagInfo {
6
- export interface IText {
7
- text: string;
8
- kind: string;
9
- }
10
- }
1
+ export interface IJsDocTagInfo {
2
+ name: string;
3
+ text?: IJsDocTagInfo.IText[];
4
+ }
5
+ export namespace IJsDocTagInfo {
6
+ export interface IText {
7
+ text: string;
8
+ kind: string;
9
+ }
10
+ }
@@ -1,28 +1,28 @@
1
- import { Atomic } from "../typings/Atomic";
2
-
3
- import { IMetadataConstant } from "./IMetadataConstant";
4
- import { IMetadataEntry } from "./IMetadataEntry";
5
- import { IMetadataResolved } from "./IMetadataResolved";
6
-
7
- export interface IMetadata {
8
- any: boolean;
9
- required: boolean;
10
- optional: boolean;
11
- nullable: boolean;
12
- functional: boolean;
13
-
14
- atomics: Atomic.Literal[];
15
- constants: IMetadataConstant[];
16
- templates: IMetadata[][];
17
- resolved: IMetadataResolved | null;
18
-
19
- rest: IMetadata | null;
20
- arrays: string[];
21
- tuples: string[];
22
- objects: string[];
23
- aliases: string[];
24
-
25
- natives: string[];
26
- sets: IMetadata[];
27
- maps: IMetadataEntry[];
28
- }
1
+ import { Atomic } from "../typings/Atomic";
2
+
3
+ import { IMetadataConstant } from "./IMetadataConstant";
4
+ import { IMetadataEntry } from "./IMetadataEntry";
5
+ import { IMetadataResolved } from "./IMetadataResolved";
6
+
7
+ export interface IMetadata {
8
+ any: boolean;
9
+ required: boolean;
10
+ optional: boolean;
11
+ nullable: boolean;
12
+ functional: boolean;
13
+
14
+ atomics: Atomic.Literal[];
15
+ constants: IMetadataConstant[];
16
+ templates: IMetadata[][];
17
+ resolved: IMetadataResolved | null;
18
+
19
+ rest: IMetadata | null;
20
+ arrays: string[];
21
+ tuples: string[];
22
+ objects: string[];
23
+ aliases: string[];
24
+
25
+ natives: string[];
26
+ sets: IMetadata[];
27
+ maps: IMetadataEntry[];
28
+ }
@@ -1,14 +1,14 @@
1
- import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
- import { IMetadata } from "./IMetadata";
3
- import { IMetadataTag } from "./IMetadataTag";
4
-
5
- export interface IMetadataAlias {
6
- name: string;
7
- value: IMetadata;
8
- nullables: boolean[];
9
-
10
- description: string | null;
11
- tags: IMetadataTag[];
12
- jsDocTags: IJsDocTagInfo[];
13
- recursive: boolean;
14
- }
1
+ import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
+ import { IMetadata } from "./IMetadata";
3
+ import { IMetadataTag } from "./IMetadataTag";
4
+
5
+ export interface IMetadataAlias {
6
+ name: string;
7
+ value: IMetadata;
8
+ nullables: boolean[];
9
+
10
+ description: string | null;
11
+ tags: IMetadataTag[];
12
+ jsDocTags: IJsDocTagInfo[];
13
+ recursive: boolean;
14
+ }
@@ -1,7 +1,7 @@
1
- import { IMetadata } from "./IMetadata";
2
- import { IMetadataCollection } from "./IMetadataCollection";
3
-
4
- export interface IMetadataApplication {
5
- metadatas: IMetadata[];
6
- collection: IMetadataCollection;
7
- }
1
+ import { IMetadata } from "./IMetadata";
2
+ import { IMetadataCollection } from "./IMetadataCollection";
3
+
4
+ export interface IMetadataApplication {
5
+ metadatas: IMetadata[];
6
+ collection: IMetadataCollection;
7
+ }
@@ -1,10 +1,10 @@
1
- import { IMetadata } from "./IMetadata";
2
-
3
- export interface IMetadataArray {
4
- name: string;
5
- value: IMetadata;
6
-
7
- nullables: boolean[];
8
- recursive: boolean;
9
- index: number | null;
10
- }
1
+ import { IMetadata } from "./IMetadata";
2
+
3
+ export interface IMetadataArray {
4
+ name: string;
5
+ value: IMetadata;
6
+
7
+ nullables: boolean[];
8
+ recursive: boolean;
9
+ index: number | null;
10
+ }
@@ -1,11 +1,11 @@
1
- import { IMetadataAlias } from "./IMetadataAlias";
2
- import { IMetadataArray } from "./IMetadataArray";
3
- import { IMetadataObject } from "./IMetadataObject";
4
- import { IMetadataTuple } from "./IMetadataTuple";
5
-
6
- export interface IMetadataCollection {
7
- objects: IMetadataObject[];
8
- aliases: IMetadataAlias[];
9
- arrays: IMetadataArray[];
10
- tuples: IMetadataTuple[];
11
- }
1
+ import { IMetadataAlias } from "./IMetadataAlias";
2
+ import { IMetadataArray } from "./IMetadataArray";
3
+ import { IMetadataObject } from "./IMetadataObject";
4
+ import { IMetadataTuple } from "./IMetadataTuple";
5
+
6
+ export interface IMetadataCollection {
7
+ objects: IMetadataObject[];
8
+ aliases: IMetadataAlias[];
9
+ arrays: IMetadataArray[];
10
+ tuples: IMetadataTuple[];
11
+ }