typia 3.7.3-dev.20230408 → 3.7.4-dev.20230410

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 (215) hide show
  1. package/README.md +5 -56
  2. package/package.json +8 -8
  3. package/src/CustomValidatorMap.ts +126 -126
  4. package/src/IRandomGenerator.ts +33 -33
  5. package/src/IValidation.ts +21 -21
  6. package/src/Primitive.ts +104 -104
  7. package/src/TypeGuardError.ts +36 -36
  8. package/src/executable/TypiaGenerateWizard.ts +87 -87
  9. package/src/executable/TypiaSetupWizard.ts +152 -152
  10. package/src/executable/setup/ArgumentParser.ts +91 -91
  11. package/src/executable/setup/CommandExecutor.ts +8 -8
  12. package/src/executable/setup/FileRetriever.ts +33 -33
  13. package/src/executable/setup/PackageManager.ts +92 -92
  14. package/src/executable/setup/PluginConfigurator.ts +99 -99
  15. package/src/executable/typia.ts +38 -38
  16. package/src/factories/CommentFactory.ts +10 -10
  17. package/src/factories/ExpressionFactory.ts +77 -77
  18. package/src/factories/IdentifierFactory.ts +81 -81
  19. package/src/factories/LiteralFactory.ts +44 -44
  20. package/src/factories/MetadataCollection.ts +122 -122
  21. package/src/factories/MetadataFactory.ts +51 -51
  22. package/src/factories/MetadataTagFactory.ts +302 -302
  23. package/src/factories/StatementFactory.ts +60 -60
  24. package/src/factories/TemplateFactory.ts +56 -56
  25. package/src/factories/TypeFactory.ts +129 -129
  26. package/src/factories/TypiaFileFactory.ts +120 -120
  27. package/src/factories/ValueFactory.ts +12 -12
  28. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  29. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  30. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  31. package/src/factories/internal/metadata/iterate_metadata.ts +80 -80
  32. package/src/factories/internal/metadata/iterate_metadata_array.ts +29 -29
  33. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  34. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  35. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  36. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  37. package/src/factories/internal/metadata/iterate_metadata_native.ts +222 -222
  38. package/src/factories/internal/metadata/iterate_metadata_object.ts +48 -48
  39. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  40. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  41. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  42. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +45 -45
  43. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  44. package/src/functional/$any.ts +3 -3
  45. package/src/functional/$dictionary.ts +20 -20
  46. package/src/functional/$every.ts +11 -11
  47. package/src/functional/$guard.ts +35 -35
  48. package/src/functional/$is_between.ts +7 -7
  49. package/src/functional/$is_custom.ts +14 -14
  50. package/src/functional/$is_date.ts +4 -4
  51. package/src/functional/$is_datetime.ts +3 -3
  52. package/src/functional/$is_email.ts +5 -5
  53. package/src/functional/$is_ipv4.ts +5 -5
  54. package/src/functional/$is_ipv6.ts +5 -5
  55. package/src/functional/$is_url.ts +5 -5
  56. package/src/functional/$is_uuid.ts +5 -5
  57. package/src/functional/$join.ts +50 -50
  58. package/src/functional/$number.ts +12 -12
  59. package/src/functional/$report.ts +15 -15
  60. package/src/functional/$rest.ts +3 -3
  61. package/src/functional/$string.ts +37 -37
  62. package/src/functional/$tail.ts +6 -6
  63. package/src/functional/Namespace.ts +127 -127
  64. package/src/index.ts +4 -4
  65. package/src/metadata/ICommentTag.ts +4 -4
  66. package/src/metadata/IJsDocTagInfo.ts +10 -10
  67. package/src/metadata/IMetadata.ts +25 -25
  68. package/src/metadata/IMetadataApplication.ts +7 -7
  69. package/src/metadata/IMetadataConstant.ts +16 -16
  70. package/src/metadata/IMetadataEntry.ts +6 -6
  71. package/src/metadata/IMetadataObject.ts +29 -29
  72. package/src/metadata/IMetadataProperty.ts +11 -11
  73. package/src/metadata/IMetadataTag.ts +105 -105
  74. package/src/metadata/Metadata.ts +534 -534
  75. package/src/metadata/MetadataConstant.ts +3 -3
  76. package/src/metadata/MetadataObject.ts +131 -131
  77. package/src/metadata/MetadataProperty.ts +64 -64
  78. package/src/module.ts +2043 -2043
  79. package/src/programmers/ApplicationProgrammer.ts +55 -55
  80. package/src/programmers/AssertCloneProgrammer.ts +70 -70
  81. package/src/programmers/AssertParseProgrammer.ts +65 -65
  82. package/src/programmers/AssertProgrammer.ts +284 -284
  83. package/src/programmers/AssertPruneProgrammer.ts +67 -67
  84. package/src/programmers/AssertStringifyProgrammer.ts +71 -71
  85. package/src/programmers/CheckerProgrammer.ts +922 -922
  86. package/src/programmers/CloneProgrammer.ts +388 -388
  87. package/src/programmers/FeatureProgrammer.ts +512 -512
  88. package/src/programmers/IsCloneProgrammer.ts +80 -80
  89. package/src/programmers/IsParseProgrammer.ts +74 -74
  90. package/src/programmers/IsProgrammer.ts +206 -206
  91. package/src/programmers/IsPruneProgrammer.ts +75 -75
  92. package/src/programmers/IsStringifyProgrammer.ts +81 -81
  93. package/src/programmers/LiteralsProgrammer.ts +65 -65
  94. package/src/programmers/PruneProgrammer.ts +343 -343
  95. package/src/programmers/RandomProgrammer.ts +413 -413
  96. package/src/programmers/StringifyProgrammer.ts +801 -801
  97. package/src/programmers/ValidateCloneProgrammer.ts +90 -90
  98. package/src/programmers/ValidateParseProgrammer.ts +69 -69
  99. package/src/programmers/ValidateProgrammer.ts +317 -317
  100. package/src/programmers/ValidatePruneProgrammer.ts +83 -83
  101. package/src/programmers/ValidateStringifyProgrammer.ts +89 -89
  102. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  103. package/src/programmers/helpers/CloneJoiner.ts +134 -134
  104. package/src/programmers/helpers/FunctionImporeter.ts +55 -55
  105. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  106. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  107. package/src/programmers/helpers/OptionPredicator.ts +19 -19
  108. package/src/programmers/helpers/PruneJoiner.ts +52 -52
  109. package/src/programmers/helpers/RandomJoiner.ts +161 -161
  110. package/src/programmers/helpers/RandomRanger.ts +216 -216
  111. package/src/programmers/helpers/StringifyJoinder.ts +114 -114
  112. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  113. package/src/programmers/helpers/UnionExplorer.ts +281 -281
  114. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  115. package/src/programmers/internal/application_array.ts +37 -37
  116. package/src/programmers/internal/application_boolean.ts +17 -17
  117. package/src/programmers/internal/application_constant.ts +29 -29
  118. package/src/programmers/internal/application_default.ts +17 -17
  119. package/src/programmers/internal/application_default_string.ts +32 -32
  120. package/src/programmers/internal/application_native.ts +32 -32
  121. package/src/programmers/internal/application_number.ts +73 -73
  122. package/src/programmers/internal/application_object.ts +153 -153
  123. package/src/programmers/internal/application_schema.ts +184 -184
  124. package/src/programmers/internal/application_string.ts +45 -45
  125. package/src/programmers/internal/application_templates.ts +27 -27
  126. package/src/programmers/internal/application_tuple.ts +29 -29
  127. package/src/programmers/internal/check_array.ts +30 -30
  128. package/src/programmers/internal/check_array_length.ts +35 -35
  129. package/src/programmers/internal/check_bigint.ts +82 -82
  130. package/src/programmers/internal/check_custom.ts +33 -33
  131. package/src/programmers/internal/check_dynamic_properties.ts +197 -197
  132. package/src/programmers/internal/check_everything.ts +28 -28
  133. package/src/programmers/internal/check_native.ts +21 -21
  134. package/src/programmers/internal/check_number.ts +177 -177
  135. package/src/programmers/internal/check_object.ts +55 -55
  136. package/src/programmers/internal/check_string.ts +25 -25
  137. package/src/programmers/internal/check_string_tags.ts +73 -73
  138. package/src/programmers/internal/check_template.ts +59 -59
  139. package/src/programmers/internal/check_union_array_like.ts +272 -272
  140. package/src/programmers/internal/check_union_tuple.ts +35 -35
  141. package/src/programmers/internal/decode_union_object.ts +73 -73
  142. package/src/programmers/internal/feature_object_entries.ts +63 -63
  143. package/src/programmers/internal/get_comment_tags.ts +23 -23
  144. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  145. package/src/programmers/internal/prune_object_properties.ts +60 -60
  146. package/src/programmers/internal/random_custom.ts +30 -30
  147. package/src/programmers/internal/stringify_dynamic_properties.ts +168 -168
  148. package/src/programmers/internal/stringify_native.ts +8 -8
  149. package/src/programmers/internal/stringify_regular_properties.ts +84 -84
  150. package/src/programmers/internal/template_to_pattern.ts +15 -15
  151. package/src/schemas/IJsonApplication.ts +9 -9
  152. package/src/schemas/IJsonComponents.ts +26 -26
  153. package/src/schemas/IJsonSchema.ts +121 -121
  154. package/src/transform.ts +21 -21
  155. package/src/transformers/CallExpressionTransformer.ts +174 -174
  156. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  157. package/src/transformers/FileTransformer.ts +49 -49
  158. package/src/transformers/IProject.ts +11 -11
  159. package/src/transformers/ITransformOptions.ts +62 -62
  160. package/src/transformers/ImportTransformer.ts +66 -66
  161. package/src/transformers/NodeTransformer.ts +19 -19
  162. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +119 -119
  163. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  164. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  165. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  166. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  167. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  168. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  169. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  170. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  171. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  172. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +41 -41
  173. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  174. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  175. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  176. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  177. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +30 -30
  178. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +54 -54
  179. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  180. package/src/transformers/features/miscellaneous/RandomTransformer.ts +46 -46
  181. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  182. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  183. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  184. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  185. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  186. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  187. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  188. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  189. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  190. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +9 -9
  191. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  192. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  193. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +11 -11
  194. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  195. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  196. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  197. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  198. package/src/transformers/features/validators/CreateAssertTransformer.ts +12 -12
  199. package/src/transformers/features/validators/CreateIsTransformer.ts +10 -10
  200. package/src/transformers/features/validators/CreateValidateTransformer.ts +12 -12
  201. package/src/transformers/features/validators/IsTransformer.ts +10 -10
  202. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  203. package/src/transformers/internal/GenericTransformer.ts +99 -99
  204. package/src/typings/Atomic.ts +17 -17
  205. package/src/typings/ClassProperties.ts +5 -5
  206. package/src/typings/Customizable.ts +5 -5
  207. package/src/typings/OmitNever.ts +3 -3
  208. package/src/typings/SpecialFields.ts +3 -3
  209. package/src/typings/Writable.ts +11 -11
  210. package/src/utils/ArrayUtil.ts +49 -49
  211. package/src/utils/Escaper.ts +50 -50
  212. package/src/utils/MapUtil.ts +14 -14
  213. package/src/utils/PatternUtil.ts +30 -30
  214. package/src/utils/RandomGenerator.ts +96 -96
  215. 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
+ };