typia 3.6.2 → 3.6.3

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 (205) hide show
  1. package/README.md +2 -1
  2. package/lib/factories/internal/metadata/emplace_metadata_object.js +8 -7
  3. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  4. package/lib/module.d.ts +2 -2
  5. package/package.json +1 -1
  6. package/src/IRandomGenerator.ts +16 -16
  7. package/src/IValidation.ts +21 -21
  8. package/src/Primitive.ts +104 -104
  9. package/src/TypeGuardError.ts +36 -36
  10. package/src/executable/TypiaGenerateWizard.ts +87 -87
  11. package/src/executable/TypiaSetupWizard.ts +142 -142
  12. package/src/executable/setup/ArgumentParser.ts +91 -91
  13. package/src/executable/setup/CommandExecutor.ts +8 -8
  14. package/src/executable/setup/FileRetriever.ts +33 -33
  15. package/src/executable/setup/PackageManager.ts +92 -92
  16. package/src/executable/setup/PluginConfigurator.ts +99 -99
  17. package/src/executable/typia.ts +38 -38
  18. package/src/factories/CommentFactory.ts +10 -10
  19. package/src/factories/ExpressionFactory.ts +77 -77
  20. package/src/factories/IdentifierFactory.ts +73 -73
  21. package/src/factories/LiteralFactory.ts +44 -44
  22. package/src/factories/MetadataCollection.ts +122 -122
  23. package/src/factories/MetadataFactory.ts +51 -51
  24. package/src/factories/MetadataTagFactory.ts +265 -265
  25. package/src/factories/StatementFactory.ts +60 -60
  26. package/src/factories/TemplateFactory.ts +56 -56
  27. package/src/factories/TypeFactory.ts +129 -129
  28. package/src/factories/TypiaFileFactory.ts +117 -117
  29. package/src/factories/ValueFactory.ts +12 -12
  30. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  31. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -140
  32. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  33. package/src/factories/internal/metadata/iterate_metadata.ts +80 -80
  34. package/src/factories/internal/metadata/iterate_metadata_array.ts +29 -29
  35. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  36. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  37. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  38. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  39. package/src/factories/internal/metadata/iterate_metadata_native.ts +222 -222
  40. package/src/factories/internal/metadata/iterate_metadata_object.ts +48 -48
  41. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  42. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  43. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  44. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +45 -45
  45. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  46. package/src/functional/$any.ts +3 -3
  47. package/src/functional/$every.ts +11 -11
  48. package/src/functional/$guard.ts +35 -35
  49. package/src/functional/$is_between.ts +7 -7
  50. package/src/functional/$is_email.ts +5 -5
  51. package/src/functional/$is_ipv4.ts +5 -5
  52. package/src/functional/$is_ipv6.ts +5 -5
  53. package/src/functional/$is_url.ts +5 -5
  54. package/src/functional/$is_uuid.ts +5 -5
  55. package/src/functional/$join.ts +50 -50
  56. package/src/functional/$number.ts +12 -12
  57. package/src/functional/$report.ts +15 -15
  58. package/src/functional/$rest.ts +3 -3
  59. package/src/functional/$string.ts +37 -37
  60. package/src/functional/$tail.ts +6 -6
  61. package/src/functional/Namespace.ts +121 -121
  62. package/src/index.ts +4 -4
  63. package/src/metadata/IJsDocTagInfo.ts +10 -10
  64. package/src/metadata/IMetadata.ts +25 -25
  65. package/src/metadata/IMetadataApplication.ts +7 -7
  66. package/src/metadata/IMetadataConstant.ts +16 -16
  67. package/src/metadata/IMetadataEntry.ts +6 -6
  68. package/src/metadata/IMetadataObject.ts +29 -29
  69. package/src/metadata/IMetadataProperty.ts +11 -11
  70. package/src/metadata/IMetadataTag.ts +113 -113
  71. package/src/metadata/Metadata.ts +534 -534
  72. package/src/metadata/MetadataConstant.ts +3 -3
  73. package/src/metadata/MetadataObject.ts +131 -131
  74. package/src/metadata/MetadataProperty.ts +64 -64
  75. package/src/module.ts +1946 -1946
  76. package/src/programmers/ApplicationProgrammer.ts +55 -55
  77. package/src/programmers/AssertCloneProgrammer.ts +70 -70
  78. package/src/programmers/AssertParseProgrammer.ts +65 -65
  79. package/src/programmers/AssertProgrammer.ts +232 -232
  80. package/src/programmers/AssertPruneProgrammer.ts +67 -67
  81. package/src/programmers/AssertStringifyProgrammer.ts +71 -71
  82. package/src/programmers/CheckerProgrammer.ts +893 -893
  83. package/src/programmers/CloneProgrammer.ts +386 -386
  84. package/src/programmers/FeatureProgrammer.ts +505 -505
  85. package/src/programmers/IsCloneProgrammer.ts +80 -80
  86. package/src/programmers/IsParseProgrammer.ts +74 -74
  87. package/src/programmers/IsProgrammer.ts +200 -200
  88. package/src/programmers/IsPruneProgrammer.ts +75 -75
  89. package/src/programmers/IsStringifyProgrammer.ts +81 -81
  90. package/src/programmers/PruneProgrammer.ts +341 -341
  91. package/src/programmers/RandomProgrammer.ts +391 -391
  92. package/src/programmers/StringifyProgrammer.ts +795 -795
  93. package/src/programmers/ValidateCloneProgrammer.ts +90 -90
  94. package/src/programmers/ValidateParseProgrammer.ts +69 -69
  95. package/src/programmers/ValidateProgrammer.ts +266 -266
  96. package/src/programmers/ValidatePruneProgrammer.ts +83 -83
  97. package/src/programmers/ValidateStringifyProgrammer.ts +89 -89
  98. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  99. package/src/programmers/helpers/CloneJoiner.ts +134 -134
  100. package/src/programmers/helpers/FunctionImporeter.ts +55 -55
  101. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  102. package/src/programmers/helpers/OptionPredicator.ts +19 -19
  103. package/src/programmers/helpers/PruneJoiner.ts +52 -52
  104. package/src/programmers/helpers/RandomJoiner.ts +149 -149
  105. package/src/programmers/helpers/RandomRanger.ts +216 -216
  106. package/src/programmers/helpers/StringifyJoinder.ts +114 -114
  107. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  108. package/src/programmers/helpers/UnionExplorer.ts +274 -274
  109. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  110. package/src/programmers/internal/application_array.ts +37 -37
  111. package/src/programmers/internal/application_boolean.ts +17 -17
  112. package/src/programmers/internal/application_constant.ts +29 -29
  113. package/src/programmers/internal/application_default.ts +17 -17
  114. package/src/programmers/internal/application_default_string.ts +32 -32
  115. package/src/programmers/internal/application_native.ts +29 -29
  116. package/src/programmers/internal/application_number.ts +70 -70
  117. package/src/programmers/internal/application_object.ts +153 -153
  118. package/src/programmers/internal/application_schema.ts +184 -184
  119. package/src/programmers/internal/application_string.ts +41 -41
  120. package/src/programmers/internal/application_templates.ts +27 -27
  121. package/src/programmers/internal/application_tuple.ts +29 -29
  122. package/src/programmers/internal/check_array.ts +22 -22
  123. package/src/programmers/internal/check_array_length.ts +44 -44
  124. package/src/programmers/internal/check_bigint.ts +64 -64
  125. package/src/programmers/internal/check_dynamic_properties.ts +197 -197
  126. package/src/programmers/internal/check_everything.ts +28 -28
  127. package/src/programmers/internal/check_native.ts +21 -21
  128. package/src/programmers/internal/check_number.ts +145 -145
  129. package/src/programmers/internal/check_object.ts +48 -48
  130. package/src/programmers/internal/check_string.ts +24 -24
  131. package/src/programmers/internal/check_string_tags.ts +63 -63
  132. package/src/programmers/internal/check_template.ts +50 -50
  133. package/src/programmers/internal/check_union_array_like.ts +260 -260
  134. package/src/programmers/internal/check_union_tuple.ts +33 -33
  135. package/src/programmers/internal/decode_union_object.ts +73 -73
  136. package/src/programmers/internal/feature_object_entries.ts +59 -59
  137. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  138. package/src/programmers/internal/prune_object_properties.ts +60 -60
  139. package/src/programmers/internal/stringify_dynamic_properties.ts +165 -165
  140. package/src/programmers/internal/stringify_native.ts +8 -8
  141. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  142. package/src/programmers/internal/template_to_pattern.ts +15 -15
  143. package/src/schemas/IJsonApplication.ts +9 -9
  144. package/src/schemas/IJsonComponents.ts +26 -26
  145. package/src/schemas/IJsonSchema.ts +127 -127
  146. package/src/transform.ts +21 -21
  147. package/src/transformers/CallExpressionTransformer.ts +172 -172
  148. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  149. package/src/transformers/FileTransformer.ts +49 -49
  150. package/src/transformers/IProject.ts +11 -11
  151. package/src/transformers/ITransformOptions.ts +62 -62
  152. package/src/transformers/ImportTransformer.ts +60 -60
  153. package/src/transformers/NodeTransformer.ts +19 -19
  154. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +120 -120
  155. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  156. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  157. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  158. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  159. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  160. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  161. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  162. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  163. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  164. package/src/transformers/features/miscellaneous/CreateRandomGenerator.ts +42 -42
  165. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  166. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  167. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  168. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  169. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
  170. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  171. package/src/transformers/features/miscellaneous/RandomTransformer.ts +48 -48
  172. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  173. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  174. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  175. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  176. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  177. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  178. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  179. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  180. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  181. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +9 -9
  182. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  183. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  184. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +11 -11
  185. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  186. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  187. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  188. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  189. package/src/transformers/features/validators/CreateAssertTransformer.ts +12 -12
  190. package/src/transformers/features/validators/CreateIsTransformer.ts +10 -10
  191. package/src/transformers/features/validators/CreateValidateTransformer.ts +12 -12
  192. package/src/transformers/features/validators/IsTransformer.ts +10 -10
  193. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  194. package/src/transformers/internal/GenericTransformer.ts +99 -99
  195. package/src/typings/Atomic.ts +17 -17
  196. package/src/typings/ClassProperties.ts +5 -5
  197. package/src/typings/OmitNever.ts +3 -3
  198. package/src/typings/SpecialFields.ts +3 -3
  199. package/src/typings/Writable.ts +11 -11
  200. package/src/utils/ArrayUtil.ts +49 -49
  201. package/src/utils/Escaper.ts +50 -50
  202. package/src/utils/MapUtil.ts +14 -14
  203. package/src/utils/PatternUtil.ts +30 -30
  204. package/src/utils/RandomGenerator.ts +90 -90
  205. package/src/utils/Singleton.ts +17 -17
@@ -1,127 +1,127 @@
1
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
- import { IMetadataTag } from "../metadata/IMetadataTag";
3
-
4
- import { Atomic } from "../typings/Atomic";
5
-
6
- export type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;
7
- export namespace IJsonSchema {
8
- export type NotUnknown =
9
- | IEnumeration<"boolean">
10
- | IEnumeration<"number">
11
- | IEnumeration<"string">
12
- | IBoolean
13
- | IInteger
14
- | INumber
15
- | IString
16
- | IArray
17
- | ITuple
18
- | IOneOf
19
- | IReference
20
- | IRecursiveReference
21
- | INullOnly;
22
-
23
- /* -----------------------------------------------------------
24
- ATOMICS
25
- ----------------------------------------------------------- */
26
- export interface IEnumeration<
27
- Literal extends Exclude<Atomic.Literal, "bigint">,
28
- > extends IAtomic<Literal> {
29
- enum: Array<Atomic.Mapper[Literal]>;
30
- }
31
- export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
32
- extends ISignificant<Literal> {
33
- default?: Atomic.Mapper[Literal];
34
- }
35
- export interface IString extends IAtomic<"string"> {
36
- /**
37
- * @type uint
38
- */
39
- minLength?: number;
40
- /**
41
- * @type uint
42
- */
43
- maxLength?: number;
44
- pattern?: string;
45
- format?: string;
46
- }
47
- export interface INumber extends IAtomic<"number"> {
48
- minimum?: number;
49
- maximum?: number;
50
- exclusiveMinimum?: number;
51
- exclusiveMaximum?: number;
52
- multipleOf?: number;
53
- }
54
- export interface IInteger extends IAtomic<"integer"> {
55
- /**
56
- * @type int
57
- */
58
- minimum?: number;
59
- /**
60
- * @type int
61
- */
62
- maximum?: number;
63
- /**
64
- * @type int
65
- */
66
- exclusiveMinimum?: number;
67
- /**
68
- * @type int
69
- */
70
- exclusiveMaximum?: number;
71
- /**
72
- * @type int
73
- */
74
- multipleOf?: number;
75
- }
76
- export interface IBoolean extends IAtomic<"boolean"> {}
77
-
78
- /* -----------------------------------------------------------
79
- OBJECTS
80
- ----------------------------------------------------------- */
81
- export interface IArray extends ISignificant<"array"> {
82
- items: IJsonSchema;
83
- /**
84
- * @type uint
85
- */
86
- minItems?: number;
87
- /**
88
- * @type uint
89
- */
90
- maxItems?: number;
91
- "x-typia-tuple"?: ITuple;
92
- }
93
- export interface ITuple extends ISignificant<"array"> {
94
- items: IJsonSchema[];
95
- }
96
- export interface IReference extends IAttribute {
97
- $ref: string;
98
- }
99
- export interface IRecursiveReference extends IAttribute {
100
- $recursiveRef: string;
101
- }
102
- export interface INullOnly extends IAttribute {
103
- type: "null";
104
- }
105
-
106
- /* -----------------------------------------------------------
107
- MISCELLANEOUS
108
- ----------------------------------------------------------- */
109
- export interface IOneOf extends IAttribute {
110
- oneOf: IJsonSchema[];
111
- }
112
- export interface IUnknown {}
113
-
114
- export interface ISignificant<Literal extends string> extends IAttribute {
115
- type: Literal;
116
- nullable: boolean;
117
- }
118
- export interface IAttribute {
119
- deprecated?: boolean;
120
- title?: string;
121
- description?: string;
122
- "x-typia-metaTags"?: IMetadataTag[];
123
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
124
- "x-typia-required"?: boolean;
125
- "x-typia-rest"?: boolean;
126
- }
127
- }
1
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
+ import { IMetadataTag } from "../metadata/IMetadataTag";
3
+
4
+ import { Atomic } from "../typings/Atomic";
5
+
6
+ export type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;
7
+ export namespace IJsonSchema {
8
+ export type NotUnknown =
9
+ | IEnumeration<"boolean">
10
+ | IEnumeration<"number">
11
+ | IEnumeration<"string">
12
+ | IBoolean
13
+ | IInteger
14
+ | INumber
15
+ | IString
16
+ | IArray
17
+ | ITuple
18
+ | IOneOf
19
+ | IReference
20
+ | IRecursiveReference
21
+ | INullOnly;
22
+
23
+ /* -----------------------------------------------------------
24
+ ATOMICS
25
+ ----------------------------------------------------------- */
26
+ export interface IEnumeration<
27
+ Literal extends Exclude<Atomic.Literal, "bigint">,
28
+ > extends IAtomic<Literal> {
29
+ enum: Array<Atomic.Mapper[Literal]>;
30
+ }
31
+ export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
32
+ extends ISignificant<Literal> {
33
+ default?: Atomic.Mapper[Literal];
34
+ }
35
+ export interface IString extends IAtomic<"string"> {
36
+ /**
37
+ * @type uint
38
+ */
39
+ minLength?: number;
40
+ /**
41
+ * @type uint
42
+ */
43
+ maxLength?: number;
44
+ pattern?: string;
45
+ format?: string;
46
+ }
47
+ export interface INumber extends IAtomic<"number"> {
48
+ minimum?: number;
49
+ maximum?: number;
50
+ exclusiveMinimum?: number;
51
+ exclusiveMaximum?: number;
52
+ multipleOf?: number;
53
+ }
54
+ export interface IInteger extends IAtomic<"integer"> {
55
+ /**
56
+ * @type int
57
+ */
58
+ minimum?: number;
59
+ /**
60
+ * @type int
61
+ */
62
+ maximum?: number;
63
+ /**
64
+ * @type int
65
+ */
66
+ exclusiveMinimum?: number;
67
+ /**
68
+ * @type int
69
+ */
70
+ exclusiveMaximum?: number;
71
+ /**
72
+ * @type int
73
+ */
74
+ multipleOf?: number;
75
+ }
76
+ export interface IBoolean extends IAtomic<"boolean"> {}
77
+
78
+ /* -----------------------------------------------------------
79
+ OBJECTS
80
+ ----------------------------------------------------------- */
81
+ export interface IArray extends ISignificant<"array"> {
82
+ items: IJsonSchema;
83
+ /**
84
+ * @type uint
85
+ */
86
+ minItems?: number;
87
+ /**
88
+ * @type uint
89
+ */
90
+ maxItems?: number;
91
+ "x-typia-tuple"?: ITuple;
92
+ }
93
+ export interface ITuple extends ISignificant<"array"> {
94
+ items: IJsonSchema[];
95
+ }
96
+ export interface IReference extends IAttribute {
97
+ $ref: string;
98
+ }
99
+ export interface IRecursiveReference extends IAttribute {
100
+ $recursiveRef: string;
101
+ }
102
+ export interface INullOnly extends IAttribute {
103
+ type: "null";
104
+ }
105
+
106
+ /* -----------------------------------------------------------
107
+ MISCELLANEOUS
108
+ ----------------------------------------------------------- */
109
+ export interface IOneOf extends IAttribute {
110
+ oneOf: IJsonSchema[];
111
+ }
112
+ export interface IUnknown {}
113
+
114
+ export interface ISignificant<Literal extends string> extends IAttribute {
115
+ type: Literal;
116
+ nullable: boolean;
117
+ }
118
+ export interface IAttribute {
119
+ deprecated?: boolean;
120
+ title?: string;
121
+ description?: string;
122
+ "x-typia-metaTags"?: IMetadataTag[];
123
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
124
+ "x-typia-required"?: boolean;
125
+ "x-typia-rest"?: boolean;
126
+ }
127
+ }
package/src/transform.ts CHANGED
@@ -1,21 +1,21 @@
1
- import ts from "typescript";
2
-
3
- import { FileTransformer } from "./transformers/FileTransformer";
4
- import { IProject } from "./transformers/IProject";
5
- import { ITransformOptions } from "./transformers/ITransformOptions";
6
-
7
- export function transform(
8
- program: ts.Program,
9
- options?: ITransformOptions,
10
- ): ts.TransformerFactory<ts.SourceFile> {
11
- const project: IProject = {
12
- program,
13
- compilerOptions: program.getCompilerOptions(),
14
- checker: program.getTypeChecker(),
15
- printer: ts.createPrinter(),
16
- options: options || {},
17
- };
18
- return (context) => (file) =>
19
- FileTransformer.transform(project, context, file);
20
- }
21
- export default transform;
1
+ import ts from "typescript";
2
+
3
+ import { FileTransformer } from "./transformers/FileTransformer";
4
+ import { IProject } from "./transformers/IProject";
5
+ import { ITransformOptions } from "./transformers/ITransformOptions";
6
+
7
+ export function transform(
8
+ program: ts.Program,
9
+ options?: ITransformOptions,
10
+ ): ts.TransformerFactory<ts.SourceFile> {
11
+ const project: IProject = {
12
+ program,
13
+ compilerOptions: program.getCompilerOptions(),
14
+ checker: program.getTypeChecker(),
15
+ printer: ts.createPrinter(),
16
+ options: options || {},
17
+ };
18
+ return (context) => (file) =>
19
+ FileTransformer.transform(project, context, file);
20
+ }
21
+ export default transform;
@@ -1,172 +1,172 @@
1
- import path from "path";
2
- import ts from "typescript";
3
-
4
- import { IProject } from "./IProject";
5
- import { ApplicationTransformer } from "./features/miscellaneous/ApplicationTransformer";
6
- import { AssertCloneTransformer } from "./features/miscellaneous/AssertCloneTransformer";
7
- import { AssertPruneTransformer } from "./features/miscellaneous/AssertPruneTransformer";
8
- import { CloneTransformer } from "./features/miscellaneous/CloneTransformer";
9
- import { CreateAssertCloneTransformer } from "./features/miscellaneous/CreateAssertCloneTransformer";
10
- import { CreateAssertPruneTransformer } from "./features/miscellaneous/CreateAssertPruneTransformer";
11
- import { CreateCloneTransformer } from "./features/miscellaneous/CreateCloneTransformer";
12
- import { CreateIsCloneTransformer } from "./features/miscellaneous/CreateIsCloneTransformer";
13
- import { CreateIsPruneTransformer } from "./features/miscellaneous/CreateIsPruneTransformer";
14
- import { CreatePruneTransformer } from "./features/miscellaneous/CreatePruneTransformer";
15
- import { CreateRandomTransformer } from "./features/miscellaneous/CreateRandomGenerator";
16
- import { CreateValidateCloneTransformer } from "./features/miscellaneous/CreateValidateCloneTransformer";
17
- import { CreateValidatePruneTransformer } from "./features/miscellaneous/CreateValidatePruneTransformer";
18
- import { IsCloneTransformer } from "./features/miscellaneous/IsCloneTransformer";
19
- import { IsPruneTransformer } from "./features/miscellaneous/IsPruneTransformer";
20
- import { MetadataTransformer } from "./features/miscellaneous/MetadataTransformer";
21
- import { PruneTransformer } from "./features/miscellaneous/PruneTransformer";
22
- import { RandomTransformer } from "./features/miscellaneous/RandomTransformer";
23
- import { ValidateCloneTransformer } from "./features/miscellaneous/ValidateCloneTransformer";
24
- import { ValidatePruneTransformer } from "./features/miscellaneous/ValidatePruneTransformer";
25
- import { AssertParseTransformer } from "./features/parsers/AssertParseTransformer";
26
- import { CreateAssertParseTransformer } from "./features/parsers/CreateAssertParseTransformer";
27
- import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransformer";
28
- import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
29
- import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
30
- import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
31
- import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
32
- import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
33
- import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
34
- import { CreateStringifyTransformer } from "./features/stringifiers/CreateStringifyTransformer";
35
- import { CreateValidateStringifyTransformer } from "./features/stringifiers/CreateValidateStringifyProgrammer";
36
- import { IsStringifyTransformer } from "./features/stringifiers/IsStringifyTransformer";
37
- import { StringifyTransformer } from "./features/stringifiers/StringifyTransformer";
38
- import { ValidateStringifyTransformer } from "./features/stringifiers/ValidateStringifyTransformer";
39
- import { AssertTransformer } from "./features/validators/AssertTransformer";
40
- import { CreateAssertTransformer } from "./features/validators/CreateAssertTransformer";
41
- import { CreateIsTransformer } from "./features/validators/CreateIsTransformer";
42
- import { CreateValidateTransformer } from "./features/validators/CreateValidateTransformer";
43
- import { IsTransformer } from "./features/validators/IsTransformer";
44
- import { ValidateTransformer } from "./features/validators/ValidateTransformer";
45
-
46
- export namespace CallExpressionTransformer {
47
- export function transform(
48
- project: IProject,
49
- expression: ts.CallExpression,
50
- ): ts.Expression {
51
- //----
52
- // VALIDATIONS
53
- //----
54
- // SIGNATURE DECLARATION
55
- const declaration: ts.Declaration | undefined =
56
- project.checker.getResolvedSignature(expression)?.declaration;
57
- if (!declaration) return expression;
58
-
59
- // FILE PATH
60
- const file: string = path.resolve(declaration.getSourceFile().fileName);
61
- if (
62
- file.indexOf(LIB_PATH) === -1 &&
63
- file !== SRC_PATH &&
64
- file !== CLI_PATH
65
- )
66
- return expression;
67
-
68
- //----
69
- // TRANSFORMATION
70
- //----
71
- // FUNCTION NAME
72
- const { name } = project.checker.getTypeAtLocation(declaration).symbol;
73
-
74
- // FIND TRANSFORMER
75
- const functor: (() => Task) | undefined = FUNCTORS[name];
76
- if (functor === undefined) return expression;
77
-
78
- // RETURNS WITH TRANSFORMATION
79
- return functor()(project, expression.expression, expression);
80
- }
81
- }
82
-
83
- type Task = (
84
- project: IProject,
85
- modulo: ts.LeftHandSideExpression,
86
- expression: ts.CallExpression,
87
- ) => ts.Expression;
88
-
89
- const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
90
- const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
91
- const CLI_PATH = path.resolve(
92
- path.join(__dirname, "..", "..", "..", "src", "module.ts"),
93
- );
94
-
95
- const FUNCTORS: Record<string, () => Task> = {
96
- //----
97
- // SINGLE FUNCTIONS
98
- //----
99
- // BASIC VALIDATORS
100
- assert: () => AssertTransformer.transform(false),
101
- assertType: () => AssertTransformer.transform(false),
102
- is: () => IsTransformer.transform(false),
103
- validate: () => ValidateTransformer.transform(false),
104
-
105
- // STRICT VALIDATORS
106
- assertEquals: () => AssertTransformer.transform(true),
107
- equals: () => IsTransformer.transform(true),
108
- validateEquals: () => ValidateTransformer.transform(true),
109
-
110
- // PARSE FUNCTIONS
111
- isParse: () => IsParseTransformer.transform,
112
- assertParse: () => AssertParseTransformer.transform,
113
- validateParse: () => ValidateParseTransformer.transform,
114
-
115
- // STRINGIFY FUNCTIONS
116
- application: () => ApplicationTransformer.transform,
117
- stringify: () => StringifyTransformer.transform,
118
- assertStringify: () => AssertStringifyTransformer.transform,
119
- isStringify: () => IsStringifyTransformer.transform,
120
- validateStringify: () => ValidateStringifyTransformer.transform,
121
-
122
- // MISC
123
- metadata: () => MetadataTransformer.transform,
124
- random: () => RandomTransformer.transform,
125
-
126
- clone: () => CloneTransformer.transform,
127
- assertClone: () => AssertCloneTransformer.transform,
128
- isClone: () => IsCloneTransformer.transform,
129
- validateClone: () => ValidateCloneTransformer.transform,
130
-
131
- prune: () => PruneTransformer.transform,
132
- assertPrune: () => AssertPruneTransformer.transform,
133
- isPrune: () => IsPruneTransformer.transform,
134
- validatePrune: () => ValidatePruneTransformer.transform,
135
-
136
- //----
137
- // FACTORY FUNCTIONS
138
- //----
139
- // BASIC VALIDATORS
140
- createAssert: () => CreateAssertTransformer.transform(false),
141
- createAssertType: () => CreateAssertTransformer.transform(false),
142
- createIs: () => CreateIsTransformer.transform(false),
143
- createValidate: () => CreateValidateTransformer.transform(false),
144
-
145
- // STRICT VALIDATORS
146
- createAssertEquals: () => CreateAssertTransformer.transform(true),
147
- createEquals: () => CreateIsTransformer.transform(true),
148
- createValidateEquals: () => CreateValidateTransformer.transform(true),
149
-
150
- // PARSE FUNCTIONS
151
- createIsParse: () => CreateIsParseTransformer.transform,
152
- createAssertParse: () => CreateAssertParseTransformer.transform,
153
- createValidateParse: () => CreateValidateParseTransformer.transform,
154
-
155
- // STRINGIFY FUNCTIONS
156
- createStringify: () => CreateStringifyTransformer.transform,
157
- createAssertStringify: () => CreateAssertStringifyTransformer.transform,
158
- createIsStringify: () => CreateIsStringifyTransformer.transform,
159
- createValidateStringify: () => CreateValidateStringifyTransformer.transform,
160
-
161
- // MISC
162
- createRandom: () => CreateRandomTransformer.transform,
163
- createClone: () => CreateCloneTransformer.transform,
164
- createAssertClone: () => CreateAssertCloneTransformer.transform,
165
- createIsClone: () => CreateIsCloneTransformer.transform,
166
- createValidateClone: () => CreateValidateCloneTransformer.transform,
167
-
168
- createPrune: () => CreatePruneTransformer.transform,
169
- createAssertPrune: () => CreateAssertPruneTransformer.transform,
170
- createIsPrune: () => CreateIsPruneTransformer.transform,
171
- createValidatePrune: () => CreateValidatePruneTransformer.transform,
172
- };
1
+ import path from "path";
2
+ import ts from "typescript";
3
+
4
+ import { IProject } from "./IProject";
5
+ import { ApplicationTransformer } from "./features/miscellaneous/ApplicationTransformer";
6
+ import { AssertCloneTransformer } from "./features/miscellaneous/AssertCloneTransformer";
7
+ import { AssertPruneTransformer } from "./features/miscellaneous/AssertPruneTransformer";
8
+ import { CloneTransformer } from "./features/miscellaneous/CloneTransformer";
9
+ import { CreateAssertCloneTransformer } from "./features/miscellaneous/CreateAssertCloneTransformer";
10
+ import { CreateAssertPruneTransformer } from "./features/miscellaneous/CreateAssertPruneTransformer";
11
+ import { CreateCloneTransformer } from "./features/miscellaneous/CreateCloneTransformer";
12
+ import { CreateIsCloneTransformer } from "./features/miscellaneous/CreateIsCloneTransformer";
13
+ import { CreateIsPruneTransformer } from "./features/miscellaneous/CreateIsPruneTransformer";
14
+ import { CreatePruneTransformer } from "./features/miscellaneous/CreatePruneTransformer";
15
+ import { CreateRandomTransformer } from "./features/miscellaneous/CreateRandomGenerator";
16
+ import { CreateValidateCloneTransformer } from "./features/miscellaneous/CreateValidateCloneTransformer";
17
+ import { CreateValidatePruneTransformer } from "./features/miscellaneous/CreateValidatePruneTransformer";
18
+ import { IsCloneTransformer } from "./features/miscellaneous/IsCloneTransformer";
19
+ import { IsPruneTransformer } from "./features/miscellaneous/IsPruneTransformer";
20
+ import { MetadataTransformer } from "./features/miscellaneous/MetadataTransformer";
21
+ import { PruneTransformer } from "./features/miscellaneous/PruneTransformer";
22
+ import { RandomTransformer } from "./features/miscellaneous/RandomTransformer";
23
+ import { ValidateCloneTransformer } from "./features/miscellaneous/ValidateCloneTransformer";
24
+ import { ValidatePruneTransformer } from "./features/miscellaneous/ValidatePruneTransformer";
25
+ import { AssertParseTransformer } from "./features/parsers/AssertParseTransformer";
26
+ import { CreateAssertParseTransformer } from "./features/parsers/CreateAssertParseTransformer";
27
+ import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransformer";
28
+ import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
29
+ import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
30
+ import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
31
+ import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
32
+ import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
33
+ import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
34
+ import { CreateStringifyTransformer } from "./features/stringifiers/CreateStringifyTransformer";
35
+ import { CreateValidateStringifyTransformer } from "./features/stringifiers/CreateValidateStringifyProgrammer";
36
+ import { IsStringifyTransformer } from "./features/stringifiers/IsStringifyTransformer";
37
+ import { StringifyTransformer } from "./features/stringifiers/StringifyTransformer";
38
+ import { ValidateStringifyTransformer } from "./features/stringifiers/ValidateStringifyTransformer";
39
+ import { AssertTransformer } from "./features/validators/AssertTransformer";
40
+ import { CreateAssertTransformer } from "./features/validators/CreateAssertTransformer";
41
+ import { CreateIsTransformer } from "./features/validators/CreateIsTransformer";
42
+ import { CreateValidateTransformer } from "./features/validators/CreateValidateTransformer";
43
+ import { IsTransformer } from "./features/validators/IsTransformer";
44
+ import { ValidateTransformer } from "./features/validators/ValidateTransformer";
45
+
46
+ export namespace CallExpressionTransformer {
47
+ export function transform(
48
+ project: IProject,
49
+ expression: ts.CallExpression,
50
+ ): ts.Expression {
51
+ //----
52
+ // VALIDATIONS
53
+ //----
54
+ // SIGNATURE DECLARATION
55
+ const declaration: ts.Declaration | undefined =
56
+ project.checker.getResolvedSignature(expression)?.declaration;
57
+ if (!declaration) return expression;
58
+
59
+ // FILE PATH
60
+ const file: string = path.resolve(declaration.getSourceFile().fileName);
61
+ if (
62
+ file.indexOf(LIB_PATH) === -1 &&
63
+ file !== SRC_PATH &&
64
+ file !== CLI_PATH
65
+ )
66
+ return expression;
67
+
68
+ //----
69
+ // TRANSFORMATION
70
+ //----
71
+ // FUNCTION NAME
72
+ const { name } = project.checker.getTypeAtLocation(declaration).symbol;
73
+
74
+ // FIND TRANSFORMER
75
+ const functor: (() => Task) | undefined = FUNCTORS[name];
76
+ if (functor === undefined) return expression;
77
+
78
+ // RETURNS WITH TRANSFORMATION
79
+ return functor()(project, expression.expression, expression);
80
+ }
81
+ }
82
+
83
+ type Task = (
84
+ project: IProject,
85
+ modulo: ts.LeftHandSideExpression,
86
+ expression: ts.CallExpression,
87
+ ) => ts.Expression;
88
+
89
+ const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
90
+ const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
91
+ const CLI_PATH = path.resolve(
92
+ path.join(__dirname, "..", "..", "..", "src", "module.ts"),
93
+ );
94
+
95
+ const FUNCTORS: Record<string, () => Task> = {
96
+ //----
97
+ // SINGLE FUNCTIONS
98
+ //----
99
+ // BASIC VALIDATORS
100
+ assert: () => AssertTransformer.transform(false),
101
+ assertType: () => AssertTransformer.transform(false),
102
+ is: () => IsTransformer.transform(false),
103
+ validate: () => ValidateTransformer.transform(false),
104
+
105
+ // STRICT VALIDATORS
106
+ assertEquals: () => AssertTransformer.transform(true),
107
+ equals: () => IsTransformer.transform(true),
108
+ validateEquals: () => ValidateTransformer.transform(true),
109
+
110
+ // PARSE FUNCTIONS
111
+ isParse: () => IsParseTransformer.transform,
112
+ assertParse: () => AssertParseTransformer.transform,
113
+ validateParse: () => ValidateParseTransformer.transform,
114
+
115
+ // STRINGIFY FUNCTIONS
116
+ application: () => ApplicationTransformer.transform,
117
+ stringify: () => StringifyTransformer.transform,
118
+ assertStringify: () => AssertStringifyTransformer.transform,
119
+ isStringify: () => IsStringifyTransformer.transform,
120
+ validateStringify: () => ValidateStringifyTransformer.transform,
121
+
122
+ // MISC
123
+ metadata: () => MetadataTransformer.transform,
124
+ random: () => RandomTransformer.transform,
125
+
126
+ clone: () => CloneTransformer.transform,
127
+ assertClone: () => AssertCloneTransformer.transform,
128
+ isClone: () => IsCloneTransformer.transform,
129
+ validateClone: () => ValidateCloneTransformer.transform,
130
+
131
+ prune: () => PruneTransformer.transform,
132
+ assertPrune: () => AssertPruneTransformer.transform,
133
+ isPrune: () => IsPruneTransformer.transform,
134
+ validatePrune: () => ValidatePruneTransformer.transform,
135
+
136
+ //----
137
+ // FACTORY FUNCTIONS
138
+ //----
139
+ // BASIC VALIDATORS
140
+ createAssert: () => CreateAssertTransformer.transform(false),
141
+ createAssertType: () => CreateAssertTransformer.transform(false),
142
+ createIs: () => CreateIsTransformer.transform(false),
143
+ createValidate: () => CreateValidateTransformer.transform(false),
144
+
145
+ // STRICT VALIDATORS
146
+ createAssertEquals: () => CreateAssertTransformer.transform(true),
147
+ createEquals: () => CreateIsTransformer.transform(true),
148
+ createValidateEquals: () => CreateValidateTransformer.transform(true),
149
+
150
+ // PARSE FUNCTIONS
151
+ createIsParse: () => CreateIsParseTransformer.transform,
152
+ createAssertParse: () => CreateAssertParseTransformer.transform,
153
+ createValidateParse: () => CreateValidateParseTransformer.transform,
154
+
155
+ // STRINGIFY FUNCTIONS
156
+ createStringify: () => CreateStringifyTransformer.transform,
157
+ createAssertStringify: () => CreateAssertStringifyTransformer.transform,
158
+ createIsStringify: () => CreateIsStringifyTransformer.transform,
159
+ createValidateStringify: () => CreateValidateStringifyTransformer.transform,
160
+
161
+ // MISC
162
+ createRandom: () => CreateRandomTransformer.transform,
163
+ createClone: () => CreateCloneTransformer.transform,
164
+ createAssertClone: () => CreateAssertCloneTransformer.transform,
165
+ createIsClone: () => CreateIsCloneTransformer.transform,
166
+ createValidateClone: () => CreateValidateCloneTransformer.transform,
167
+
168
+ createPrune: () => CreatePruneTransformer.transform,
169
+ createAssertPrune: () => CreateAssertPruneTransformer.transform,
170
+ createIsPrune: () => CreateIsPruneTransformer.transform,
171
+ createValidatePrune: () => CreateValidatePruneTransformer.transform,
172
+ };