typia 3.7.3 → 3.7.4-dev.20230410-2

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