typia 3.7.5-dev.20230413 → 3.7.6

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