typia 3.8.0-dev.20230413 → 3.8.0-dev.20230415

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 (222) hide show
  1. package/lib/metadata/Metadata.js +1 -1
  2. package/lib/metadata/Metadata.js.map +1 -1
  3. package/lib/programmers/CheckerProgrammer.js +1 -3
  4. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  5. package/lib/programmers/internal/check_string_tags.js +2 -2
  6. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  7. package/lib/programmers/internal/check_template.js +1 -1
  8. package/lib/programmers/internal/check_template.js.map +1 -1
  9. package/package.json +2 -2
  10. package/src/CustomValidatorMap.ts +126 -126
  11. package/src/IRandomGenerator.ts +33 -33
  12. package/src/IValidation.ts +21 -21
  13. package/src/Primitive.ts +104 -104
  14. package/src/TypeGuardError.ts +36 -36
  15. package/src/executable/TypiaGenerateWizard.ts +85 -85
  16. package/src/executable/TypiaSetupWizard.ts +118 -118
  17. package/src/executable/setup/ArgumentParser.ts +45 -45
  18. package/src/executable/setup/CommandExecutor.ts +8 -8
  19. package/src/executable/setup/FileRetriever.ts +22 -22
  20. package/src/executable/setup/PackageManager.ts +71 -71
  21. package/src/executable/setup/PluginConfigurator.ts +59 -59
  22. package/src/executable/typia.ts +52 -52
  23. package/src/factories/CommentFactory.ts +10 -10
  24. package/src/factories/ExpressionFactory.ts +77 -77
  25. package/src/factories/IdentifierFactory.ts +59 -59
  26. package/src/factories/LiteralFactory.ts +44 -44
  27. package/src/factories/MetadataCollection.ts +122 -122
  28. package/src/factories/MetadataFactory.ts +51 -51
  29. package/src/factories/MetadataTagFactory.ts +302 -302
  30. package/src/factories/StatementFactory.ts +60 -60
  31. package/src/factories/TemplateFactory.ts +56 -56
  32. package/src/factories/TypeFactory.ts +129 -129
  33. package/src/factories/TypiaFileFactory.ts +120 -120
  34. package/src/factories/ValueFactory.ts +12 -12
  35. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  36. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  37. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  38. package/src/factories/internal/metadata/iterate_metadata.ts +80 -80
  39. package/src/factories/internal/metadata/iterate_metadata_array.ts +29 -29
  40. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  41. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  42. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  43. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  44. package/src/factories/internal/metadata/iterate_metadata_native.ts +222 -222
  45. package/src/factories/internal/metadata/iterate_metadata_object.ts +48 -48
  46. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  47. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  48. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  49. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +45 -45
  50. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  51. package/src/functional/$any.ts +3 -3
  52. package/src/functional/$dictionary.ts +20 -20
  53. package/src/functional/$every.ts +11 -11
  54. package/src/functional/$guard.ts +35 -35
  55. package/src/functional/$is_between.ts +7 -7
  56. package/src/functional/$is_custom.ts +14 -14
  57. package/src/functional/$is_date.ts +4 -4
  58. package/src/functional/$is_datetime.ts +3 -3
  59. package/src/functional/$is_email.ts +5 -5
  60. package/src/functional/$is_ipv4.ts +5 -5
  61. package/src/functional/$is_ipv6.ts +5 -5
  62. package/src/functional/$is_url.ts +5 -5
  63. package/src/functional/$is_uuid.ts +5 -5
  64. package/src/functional/$join.ts +50 -50
  65. package/src/functional/$number.ts +12 -12
  66. package/src/functional/$report.ts +15 -15
  67. package/src/functional/$rest.ts +3 -3
  68. package/src/functional/$string.ts +37 -37
  69. package/src/functional/$tail.ts +6 -6
  70. package/src/functional/Namespace.ts +127 -127
  71. package/src/index.ts +4 -4
  72. package/src/metadata/ICommentTag.ts +4 -4
  73. package/src/metadata/IJsDocTagInfo.ts +10 -10
  74. package/src/metadata/IMetadata.ts +25 -25
  75. package/src/metadata/IMetadataApplication.ts +7 -7
  76. package/src/metadata/IMetadataConstant.ts +16 -16
  77. package/src/metadata/IMetadataEntry.ts +6 -6
  78. package/src/metadata/IMetadataObject.ts +29 -29
  79. package/src/metadata/IMetadataProperty.ts +11 -11
  80. package/src/metadata/IMetadataTag.ts +105 -105
  81. package/src/metadata/Metadata.ts +533 -534
  82. package/src/metadata/MetadataConstant.ts +3 -3
  83. package/src/metadata/MetadataObject.ts +131 -131
  84. package/src/metadata/MetadataProperty.ts +64 -64
  85. package/src/module.ts +2043 -2043
  86. package/src/programmers/ApplicationProgrammer.ts +55 -55
  87. package/src/programmers/AssertCloneProgrammer.ts +70 -70
  88. package/src/programmers/AssertParseProgrammer.ts +65 -65
  89. package/src/programmers/AssertProgrammer.ts +284 -284
  90. package/src/programmers/AssertPruneProgrammer.ts +67 -67
  91. package/src/programmers/AssertStringifyProgrammer.ts +71 -71
  92. package/src/programmers/CheckerProgrammer.ts +920 -922
  93. package/src/programmers/CloneProgrammer.ts +388 -388
  94. package/src/programmers/FeatureProgrammer.ts +512 -512
  95. package/src/programmers/IsCloneProgrammer.ts +80 -80
  96. package/src/programmers/IsParseProgrammer.ts +74 -74
  97. package/src/programmers/IsProgrammer.ts +206 -206
  98. package/src/programmers/IsPruneProgrammer.ts +75 -75
  99. package/src/programmers/IsStringifyProgrammer.ts +81 -81
  100. package/src/programmers/LiteralsProgrammer.ts +65 -65
  101. package/src/programmers/PruneProgrammer.ts +343 -343
  102. package/src/programmers/RandomProgrammer.ts +413 -413
  103. package/src/programmers/StringifyProgrammer.ts +801 -801
  104. package/src/programmers/ValidateCloneProgrammer.ts +90 -90
  105. package/src/programmers/ValidateParseProgrammer.ts +69 -69
  106. package/src/programmers/ValidateProgrammer.ts +317 -317
  107. package/src/programmers/ValidatePruneProgrammer.ts +83 -83
  108. package/src/programmers/ValidateStringifyProgrammer.ts +89 -89
  109. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  110. package/src/programmers/helpers/CloneJoiner.ts +134 -134
  111. package/src/programmers/helpers/FunctionImporeter.ts +55 -55
  112. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  113. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  114. package/src/programmers/helpers/OptionPredicator.ts +19 -19
  115. package/src/programmers/helpers/PruneJoiner.ts +52 -52
  116. package/src/programmers/helpers/RandomJoiner.ts +161 -161
  117. package/src/programmers/helpers/RandomRanger.ts +216 -216
  118. package/src/programmers/helpers/StringifyJoinder.ts +114 -114
  119. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  120. package/src/programmers/helpers/UnionExplorer.ts +281 -281
  121. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  122. package/src/programmers/internal/application_array.ts +37 -37
  123. package/src/programmers/internal/application_boolean.ts +17 -17
  124. package/src/programmers/internal/application_constant.ts +29 -29
  125. package/src/programmers/internal/application_default.ts +17 -17
  126. package/src/programmers/internal/application_default_string.ts +32 -32
  127. package/src/programmers/internal/application_native.ts +32 -32
  128. package/src/programmers/internal/application_number.ts +73 -73
  129. package/src/programmers/internal/application_object.ts +153 -153
  130. package/src/programmers/internal/application_schema.ts +184 -184
  131. package/src/programmers/internal/application_string.ts +45 -45
  132. package/src/programmers/internal/application_templates.ts +27 -27
  133. package/src/programmers/internal/application_tuple.ts +29 -29
  134. package/src/programmers/internal/check_array.ts +30 -30
  135. package/src/programmers/internal/check_array_length.ts +35 -35
  136. package/src/programmers/internal/check_bigint.ts +82 -82
  137. package/src/programmers/internal/check_custom.ts +33 -33
  138. package/src/programmers/internal/check_dynamic_properties.ts +197 -197
  139. package/src/programmers/internal/check_everything.ts +28 -28
  140. package/src/programmers/internal/check_native.ts +21 -21
  141. package/src/programmers/internal/check_number.ts +177 -177
  142. package/src/programmers/internal/check_object.ts +55 -55
  143. package/src/programmers/internal/check_string.ts +25 -25
  144. package/src/programmers/internal/check_string_tags.ts +67 -73
  145. package/src/programmers/internal/check_template.ts +56 -59
  146. package/src/programmers/internal/check_union_array_like.ts +272 -272
  147. package/src/programmers/internal/check_union_tuple.ts +35 -35
  148. package/src/programmers/internal/decode_union_object.ts +73 -73
  149. package/src/programmers/internal/feature_object_entries.ts +63 -63
  150. package/src/programmers/internal/get_comment_tags.ts +23 -23
  151. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  152. package/src/programmers/internal/prune_object_properties.ts +60 -60
  153. package/src/programmers/internal/random_custom.ts +30 -30
  154. package/src/programmers/internal/stringify_dynamic_properties.ts +168 -168
  155. package/src/programmers/internal/stringify_native.ts +8 -8
  156. package/src/programmers/internal/stringify_regular_properties.ts +84 -84
  157. package/src/programmers/internal/template_to_pattern.ts +15 -15
  158. package/src/schemas/IJsonApplication.ts +9 -9
  159. package/src/schemas/IJsonComponents.ts +26 -26
  160. package/src/schemas/IJsonSchema.ts +121 -121
  161. package/src/transform.ts +21 -21
  162. package/src/transformers/CallExpressionTransformer.ts +174 -174
  163. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  164. package/src/transformers/FileTransformer.ts +49 -49
  165. package/src/transformers/IProject.ts +11 -11
  166. package/src/transformers/ITransformOptions.ts +62 -62
  167. package/src/transformers/ImportTransformer.ts +66 -66
  168. package/src/transformers/NodeTransformer.ts +19 -19
  169. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +119 -119
  170. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  171. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  172. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  173. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  174. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  175. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  176. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  177. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  178. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  179. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +41 -41
  180. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  181. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  182. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  183. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  184. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +30 -30
  185. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +54 -54
  186. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  187. package/src/transformers/features/miscellaneous/RandomTransformer.ts +46 -46
  188. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  189. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  190. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  191. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  192. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  193. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  194. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  195. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  196. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  197. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +9 -9
  198. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  199. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  200. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +11 -11
  201. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  202. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  203. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  204. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  205. package/src/transformers/features/validators/CreateAssertTransformer.ts +12 -12
  206. package/src/transformers/features/validators/CreateIsTransformer.ts +10 -10
  207. package/src/transformers/features/validators/CreateValidateTransformer.ts +12 -12
  208. package/src/transformers/features/validators/IsTransformer.ts +10 -10
  209. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  210. package/src/transformers/internal/GenericTransformer.ts +99 -99
  211. package/src/typings/Atomic.ts +17 -17
  212. package/src/typings/ClassProperties.ts +5 -5
  213. package/src/typings/Customizable.ts +5 -5
  214. package/src/typings/OmitNever.ts +3 -3
  215. package/src/typings/SpecialFields.ts +3 -3
  216. package/src/typings/Writable.ts +11 -11
  217. package/src/utils/ArrayUtil.ts +49 -49
  218. package/src/utils/Escaper.ts +50 -50
  219. package/src/utils/MapUtil.ts +14 -14
  220. package/src/utils/PatternUtil.ts +30 -30
  221. package/src/utils/RandomGenerator.ts +96 -96
  222. package/src/utils/Singleton.ts +17 -17
@@ -1,48 +1,48 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataObject } from "../../../metadata/MetadataObject";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_object } from "./emplace_metadata_object";
11
- import { iterate_metadata } from "./iterate_metadata";
12
-
13
- export const iterate_metadata_object =
14
- (checker: ts.TypeChecker) =>
15
- (options: MetadataFactory.IOptions) =>
16
- (collection: MetadataCollection) =>
17
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
18
- const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
- if (
20
- !filter(ts.TypeFlags.Object) &&
21
- !type.isIntersection() &&
22
- (type as any).intrinsicName !== "object"
23
- )
24
- return false;
25
- else if (type.isIntersection()) {
26
- const fakeCollection = new MetadataCollection();
27
- const fakeSchema: Metadata = Metadata.initialize();
28
-
29
- type.types.forEach((t) =>
30
- iterate_metadata(checker)(options)(fakeCollection)(
31
- fakeSchema,
32
- t,
33
- parentResolved,
34
- ),
35
- );
36
- if (
37
- fakeSchema.objects.length === 0 ||
38
- fakeSchema.objects.length !== fakeSchema.size()
39
- )
40
- return true;
41
- }
42
-
43
- const obj: MetadataObject = emplace_metadata_object(checker)(options)(
44
- collection,
45
- )(type, meta.nullable);
46
- ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
47
- return true;
48
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataObject } from "../../../metadata/MetadataObject";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_object } from "./emplace_metadata_object";
11
+ import { iterate_metadata } from "./iterate_metadata";
12
+
13
+ export const iterate_metadata_object =
14
+ (checker: ts.TypeChecker) =>
15
+ (options: MetadataFactory.IOptions) =>
16
+ (collection: MetadataCollection) =>
17
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
18
+ const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
+ if (
20
+ !filter(ts.TypeFlags.Object) &&
21
+ !type.isIntersection() &&
22
+ (type as any).intrinsicName !== "object"
23
+ )
24
+ return false;
25
+ else if (type.isIntersection()) {
26
+ const fakeCollection = new MetadataCollection();
27
+ const fakeSchema: Metadata = Metadata.initialize();
28
+
29
+ type.types.forEach((t) =>
30
+ iterate_metadata(checker)(options)(fakeCollection)(
31
+ fakeSchema,
32
+ t,
33
+ parentResolved,
34
+ ),
35
+ );
36
+ if (
37
+ fakeSchema.objects.length === 0 ||
38
+ fakeSchema.objects.length !== fakeSchema.size()
39
+ )
40
+ return true;
41
+ }
42
+
43
+ const obj: MetadataObject = emplace_metadata_object(checker)(options)(
44
+ collection,
45
+ )(type, meta.nullable);
46
+ ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
47
+ return true;
48
+ };
@@ -1,27 +1,27 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { Writable } from "../../../typings/Writable";
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_resolve =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
17
- if (options.resolve === true && parentResolved === false) {
18
- const resolved: ts.Type | null = TypeFactory.resolve(checker, type);
19
- if (resolved !== null) {
20
- Writable(meta).resolved = explore_metadata(checker)(options)(
21
- collection,
22
- )(resolved, true);
23
- return true;
24
- }
25
- }
26
- return false;
27
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { Writable } from "../../../typings/Writable";
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_resolve =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
17
+ if (options.resolve === true && parentResolved === false) {
18
+ const resolved: ts.Type | null = TypeFactory.resolve(checker, type);
19
+ if (resolved !== null) {
20
+ Writable(meta).resolved = explore_metadata(checker)(options)(
21
+ collection,
22
+ )(resolved, true);
23
+ return true;
24
+ }
25
+ }
26
+ return false;
27
+ };
@@ -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,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,45 +1,45 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { Writable } from "../../../typings/Writable";
6
-
7
- import { ArrayUtil } from "../../../utils/ArrayUtil";
8
-
9
- import { MetadataCollection } from "../../MetadataCollection";
10
- import { MetadataFactory } from "../../MetadataFactory";
11
- import { explore_metadata } from "./explore_metadata";
12
-
13
- export const iterate_metadata_tuple =
14
- (checker: ts.TypeChecker) =>
15
- (options: MetadataFactory.IOptions) =>
16
- (collection: MetadataCollection) =>
17
- (meta: Metadata, type: ts.TupleType): boolean => {
18
- if (!(checker as any).isTupleType(type)) return false;
19
-
20
- const elementFlags: readonly ts.ElementFlags[] =
21
- type.elementFlags ??
22
- (type.target as ts.TupleType)?.elementFlags ??
23
- [];
24
-
25
- const children: Metadata[] = checker
26
- .getTypeArguments(type as ts.TypeReference)
27
- .map((elem, i) => {
28
- const child: Metadata = explore_metadata(checker)(options)(
29
- collection,
30
- )(elem, false);
31
-
32
- const flag: ts.ElementFlags | undefined = elementFlags[i];
33
- if (flag !== ts.ElementFlags.Rest) return child;
34
-
35
- const wrapper: Metadata = Metadata.initialize();
36
- Writable(wrapper).rest = child;
37
- return wrapper;
38
- });
39
- ArrayUtil.set(meta.tuples, children, join_tuple_names);
40
- return true;
41
- };
42
-
43
- function join_tuple_names(metas: Metadata[]): string {
44
- return `[${metas.map((m) => m.getName).join(", ")}]`;
45
- }
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { Writable } from "../../../typings/Writable";
6
+
7
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
8
+
9
+ import { MetadataCollection } from "../../MetadataCollection";
10
+ import { MetadataFactory } from "../../MetadataFactory";
11
+ import { explore_metadata } from "./explore_metadata";
12
+
13
+ export const iterate_metadata_tuple =
14
+ (checker: ts.TypeChecker) =>
15
+ (options: MetadataFactory.IOptions) =>
16
+ (collection: MetadataCollection) =>
17
+ (meta: Metadata, type: ts.TupleType): boolean => {
18
+ if (!(checker as any).isTupleType(type)) return false;
19
+
20
+ const elementFlags: readonly ts.ElementFlags[] =
21
+ type.elementFlags ??
22
+ (type.target as ts.TupleType)?.elementFlags ??
23
+ [];
24
+
25
+ const children: Metadata[] = checker
26
+ .getTypeArguments(type as ts.TypeReference)
27
+ .map((elem, i) => {
28
+ const child: Metadata = explore_metadata(checker)(options)(
29
+ collection,
30
+ )(elem, false);
31
+
32
+ const flag: ts.ElementFlags | undefined = elementFlags[i];
33
+ if (flag !== ts.ElementFlags.Rest) return child;
34
+
35
+ const wrapper: Metadata = Metadata.initialize();
36
+ Writable(wrapper).rest = child;
37
+ return wrapper;
38
+ });
39
+ ArrayUtil.set(meta.tuples, children, join_tuple_names);
40
+ return true;
41
+ };
42
+
43
+ function join_tuple_names(metas: Metadata[]): string {
44
+ return `[${metas.map((m) => m.getName).join(", ")}]`;
45
+ }
@@ -1,59 +1,59 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- import { Writable } from "../../../typings/Writable";
6
-
7
- import { MetadataCollection } from "../../MetadataCollection";
8
- import { MetadataFactory } from "../../MetadataFactory";
9
- import { TypeFactory } from "../../TypeFactory";
10
- import { iterate_metadata } from "./iterate_metadata";
11
-
12
- export const iterate_metadata_union =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
17
- if (!type.isUnion()) return false;
18
- else if (options.resolve === false || parentResolved === true) {
19
- type.types.forEach((t) =>
20
- iterate_metadata(checker)(options)(collection)(meta, t, false),
21
- );
22
- return true;
23
- }
24
-
25
- const filter = (flag: ts.TypeFlags, t: ts.Type) =>
26
- (t.getFlags() & flag) !== 0;
27
- const normals: ts.Type[] = [];
28
- const toJsons: ts.Type[] = [];
29
-
30
- for (const individual of type.types) {
31
- if (filter(ts.TypeFlags.Object, individual)) {
32
- const resolved: ts.Type | null = TypeFactory.resolve(
33
- checker,
34
- individual,
35
- );
36
- if (resolved !== null) toJsons.push(resolved);
37
- else normals.push(individual);
38
- } else normals.push(individual);
39
- }
40
- if (toJsons.length !== 0) {
41
- Writable(meta).resolved = (() => {
42
- const union: Metadata = Metadata.initialize();
43
- toJsons.forEach((t) =>
44
- iterate_metadata(checker)(options)(collection)(
45
- meta,
46
- t,
47
- true,
48
- ),
49
- );
50
- if (union.objects.length > 1)
51
- union.union_index = collection.getUnionIndex(union);
52
- return union;
53
- })();
54
- }
55
- normals.forEach((t) =>
56
- iterate_metadata(checker)(options)(collection)(meta, t, false),
57
- );
58
- return true;
59
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ import { Writable } from "../../../typings/Writable";
6
+
7
+ import { MetadataCollection } from "../../MetadataCollection";
8
+ import { MetadataFactory } from "../../MetadataFactory";
9
+ import { TypeFactory } from "../../TypeFactory";
10
+ import { iterate_metadata } from "./iterate_metadata";
11
+
12
+ export const iterate_metadata_union =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
17
+ if (!type.isUnion()) return false;
18
+ else if (options.resolve === false || parentResolved === true) {
19
+ type.types.forEach((t) =>
20
+ iterate_metadata(checker)(options)(collection)(meta, t, false),
21
+ );
22
+ return true;
23
+ }
24
+
25
+ const filter = (flag: ts.TypeFlags, t: ts.Type) =>
26
+ (t.getFlags() & flag) !== 0;
27
+ const normals: ts.Type[] = [];
28
+ const toJsons: ts.Type[] = [];
29
+
30
+ for (const individual of type.types) {
31
+ if (filter(ts.TypeFlags.Object, individual)) {
32
+ const resolved: ts.Type | null = TypeFactory.resolve(
33
+ checker,
34
+ individual,
35
+ );
36
+ if (resolved !== null) toJsons.push(resolved);
37
+ else normals.push(individual);
38
+ } else normals.push(individual);
39
+ }
40
+ if (toJsons.length !== 0) {
41
+ Writable(meta).resolved = (() => {
42
+ const union: Metadata = Metadata.initialize();
43
+ toJsons.forEach((t) =>
44
+ iterate_metadata(checker)(options)(collection)(
45
+ meta,
46
+ t,
47
+ true,
48
+ ),
49
+ );
50
+ if (union.objects.length > 1)
51
+ union.union_index = collection.getUnionIndex(union);
52
+ return union;
53
+ })();
54
+ }
55
+ normals.forEach((t) =>
56
+ iterate_metadata(checker)(options)(collection)(meta, t, false),
57
+ );
58
+ return true;
59
+ };
@@ -1,3 +1,3 @@
1
- export function $any(val: any): any {
2
- return val !== undefined ? JSON.parse(JSON.stringify(val)) : undefined;
3
- }
1
+ export function $any(val: any): any {
2
+ return val !== undefined ? JSON.parse(JSON.stringify(val)) : undefined;
3
+ }
@@ -1,20 +1,20 @@
1
- import { Customizable } from "../typings/Customizable";
2
-
3
- export const $dictionary = (() => {
4
- const glob: {
5
- __typia_custom_validator: Map<
6
- `${string}`,
7
- Map<
8
- keyof Customizable,
9
- (tagText: string) => (value: any) => boolean
10
- >
11
- >;
12
- } =
13
- typeof global === "object" &&
14
- typeof global.process === "object" &&
15
- typeof global.process.versions === "object" &&
16
- typeof global.process.versions.node !== "undefined"
17
- ? (global as any)
18
- : (window as any);
19
- return (glob.__typia_custom_validator ??= new Map());
20
- })();
1
+ import { Customizable } from "../typings/Customizable";
2
+
3
+ export const $dictionary = (() => {
4
+ const glob: {
5
+ __typia_custom_validator: Map<
6
+ `${string}`,
7
+ Map<
8
+ keyof Customizable,
9
+ (tagText: string) => (value: any) => boolean
10
+ >
11
+ >;
12
+ } =
13
+ typeof global === "object" &&
14
+ typeof global.process === "object" &&
15
+ typeof global.process.versions === "object" &&
16
+ typeof global.process.versions.node !== "undefined"
17
+ ? (global as any)
18
+ : (window as any);
19
+ return (glob.__typia_custom_validator ??= new Map());
20
+ })();
@@ -1,11 +1,11 @@
1
- import { TypeGuardError } from "../TypeGuardError";
2
-
3
- export const $every = <T>(
4
- array: T[],
5
- pred: (value: T, i: number) => null | Omit<TypeGuardError.IProps, "method">,
6
- ): null | Omit<TypeGuardError.IProps, "method"> => {
7
- let error: null | Omit<TypeGuardError.IProps, "method"> = null;
8
- for (let i: number = 0; i < array.length; ++i)
9
- if (null !== (error = pred(array[i]!, i))) return error;
10
- return null;
11
- };
1
+ import { TypeGuardError } from "../TypeGuardError";
2
+
3
+ export const $every = <T>(
4
+ array: T[],
5
+ pred: (value: T, i: number) => null | Omit<TypeGuardError.IProps, "method">,
6
+ ): null | Omit<TypeGuardError.IProps, "method"> => {
7
+ let error: null | Omit<TypeGuardError.IProps, "method"> = null;
8
+ for (let i: number = 0; i < array.length; ++i)
9
+ if (null !== (error = pred(array[i]!, i))) return error;
10
+ return null;
11
+ };
@@ -1,35 +1,35 @@
1
- import { TypeGuardError } from "../TypeGuardError";
2
-
3
- /* -----------------------------------------------------------
4
- ASSERT V2 -> USE (NULL OR ERROR) CONDITION
5
- ----------------------------------------------------------- */
6
- // /**
7
- // * @internal
8
- // */
9
- // export const $guardV2 =
10
- // (method: string) => (props: Omit<TypeGuardError.IProps, "method">) =>
11
- // new TypeGuardError({
12
- // method,
13
- // path: props.path,
14
- // expected: props.expected,
15
- // value: props.value,
16
- // });
17
-
18
- /* -----------------------------------------------------------
19
- ASSERT V3 -> (CONDITION OR THROW(exceptable): FALSE)
20
- ----------------------------------------------------------- */
21
- /**
22
- * @internal
23
- */
24
- export const $guard =
25
- (method: string) =>
26
- (exceptionable: boolean, props: Omit<TypeGuardError.IProps, "method">) => {
27
- if (exceptionable === true)
28
- throw new TypeGuardError({
29
- method,
30
- path: props.path,
31
- expected: props.expected,
32
- value: props.value,
33
- });
34
- return false;
35
- };
1
+ import { TypeGuardError } from "../TypeGuardError";
2
+
3
+ /* -----------------------------------------------------------
4
+ ASSERT V2 -> USE (NULL OR ERROR) CONDITION
5
+ ----------------------------------------------------------- */
6
+ // /**
7
+ // * @internal
8
+ // */
9
+ // export const $guardV2 =
10
+ // (method: string) => (props: Omit<TypeGuardError.IProps, "method">) =>
11
+ // new TypeGuardError({
12
+ // method,
13
+ // path: props.path,
14
+ // expected: props.expected,
15
+ // value: props.value,
16
+ // });
17
+
18
+ /* -----------------------------------------------------------
19
+ ASSERT V3 -> (CONDITION OR THROW(exceptable): FALSE)
20
+ ----------------------------------------------------------- */
21
+ /**
22
+ * @internal
23
+ */
24
+ export const $guard =
25
+ (method: string) =>
26
+ (exceptionable: boolean, props: Omit<TypeGuardError.IProps, "method">) => {
27
+ if (exceptionable === true)
28
+ throw new TypeGuardError({
29
+ method,
30
+ path: props.path,
31
+ expected: props.expected,
32
+ value: props.value,
33
+ });
34
+ return false;
35
+ };