typia 4.0.0-dev.20230520 → 4.0.0-dev.20230527

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 (220) hide show
  1. package/lib/transform.js +1 -1
  2. package/lib/transform.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/CustomValidatorMap.ts +126 -126
  5. package/src/IRandomGenerator.ts +33 -33
  6. package/src/IValidation.ts +21 -21
  7. package/src/Primitive.ts +123 -123
  8. package/src/TypeGuardError.ts +36 -36
  9. package/src/executable/TypiaGenerateWizard.ts +85 -85
  10. package/src/executable/TypiaSetupWizard.ts +133 -133
  11. package/src/executable/setup/ArgumentParser.ts +45 -45
  12. package/src/executable/setup/CommandExecutor.ts +8 -8
  13. package/src/executable/setup/FileRetriever.ts +22 -22
  14. package/src/executable/setup/PackageManager.ts +71 -71
  15. package/src/executable/setup/PluginConfigurator.ts +70 -70
  16. package/src/executable/typia.ts +52 -52
  17. package/src/factories/CommentFactory.ts +14 -14
  18. package/src/factories/ExpressionFactory.ts +77 -77
  19. package/src/factories/IdentifierFactory.ts +62 -62
  20. package/src/factories/LiteralFactory.ts +57 -57
  21. package/src/factories/MetadataCollection.ts +123 -123
  22. package/src/factories/MetadataFactory.ts +53 -53
  23. package/src/factories/MetadataTagFactory.ts +295 -295
  24. package/src/factories/StatementFactory.ts +20 -20
  25. package/src/factories/TemplateFactory.ts +64 -64
  26. package/src/factories/TypeFactory.ts +145 -145
  27. package/src/factories/ValueFactory.ts +15 -15
  28. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  29. package/src/factories/internal/metadata/emplace_metadata_object.ts +152 -152
  30. package/src/factories/internal/metadata/explore_metadata.ts +93 -93
  31. package/src/factories/internal/metadata/iterate_metadata.ts +63 -63
  32. package/src/factories/internal/metadata/iterate_metadata_array.ts +32 -32
  33. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  34. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  35. package/src/factories/internal/metadata/iterate_metadata_constant.ts +62 -62
  36. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  37. package/src/factories/internal/metadata/iterate_metadata_native.ts +217 -217
  38. package/src/factories/internal/metadata/iterate_metadata_object.ts +51 -51
  39. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +30 -30
  40. package/src/factories/internal/metadata/iterate_metadata_set.ts +36 -36
  41. package/src/factories/internal/metadata/iterate_metadata_template.ts +40 -40
  42. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +51 -51
  43. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  44. package/src/functional/$any.ts +2 -2
  45. package/src/functional/$dictionary.ts +25 -25
  46. package/src/functional/$every.ts +11 -11
  47. package/src/functional/$guard.ts +35 -35
  48. package/src/functional/$is_between.ts +2 -2
  49. package/src/functional/$is_custom.ts +14 -14
  50. package/src/functional/$is_date.ts +3 -3
  51. package/src/functional/$is_datetime.ts +2 -2
  52. package/src/functional/$is_email.ts +4 -4
  53. package/src/functional/$is_ipv4.ts +4 -4
  54. package/src/functional/$is_ipv6.ts +4 -4
  55. package/src/functional/$is_url.ts +4 -4
  56. package/src/functional/$is_uuid.ts +4 -4
  57. package/src/functional/$join.ts +46 -46
  58. package/src/functional/$number.ts +12 -12
  59. package/src/functional/$report.ts +15 -15
  60. package/src/functional/$rest.ts +3 -3
  61. package/src/functional/$string.ts +37 -37
  62. package/src/functional/$tail.ts +5 -5
  63. package/src/functional/Namespace.ts +127 -127
  64. package/src/index.ts +4 -4
  65. package/src/metadata/ICommentTag.ts +4 -4
  66. package/src/metadata/IJsDocTagInfo.ts +10 -10
  67. package/src/metadata/IMetadata.ts +26 -26
  68. package/src/metadata/IMetadataApplication.ts +7 -7
  69. package/src/metadata/IMetadataConstant.ts +16 -16
  70. package/src/metadata/IMetadataEntry.ts +6 -6
  71. package/src/metadata/IMetadataObject.ts +29 -29
  72. package/src/metadata/IMetadataProperty.ts +11 -11
  73. package/src/metadata/IMetadataTag.ts +105 -105
  74. package/src/metadata/Metadata.ts +539 -539
  75. package/src/metadata/MetadataConstant.ts +3 -3
  76. package/src/metadata/MetadataObject.ts +127 -127
  77. package/src/metadata/MetadataProperty.ts +64 -64
  78. package/src/module.ts +2038 -2038
  79. package/src/programmers/ApplicationProgrammer.ts +48 -48
  80. package/src/programmers/AssertCloneProgrammer.ts +68 -68
  81. package/src/programmers/AssertParseProgrammer.ts +66 -66
  82. package/src/programmers/AssertProgrammer.ts +274 -274
  83. package/src/programmers/AssertPruneProgrammer.ts +73 -73
  84. package/src/programmers/AssertStringifyProgrammer.ts +66 -66
  85. package/src/programmers/CheckerProgrammer.ts +897 -897
  86. package/src/programmers/CloneProgrammer.ts +387 -387
  87. package/src/programmers/FeatureProgrammer.ts +510 -510
  88. package/src/programmers/IsCloneProgrammer.ts +79 -79
  89. package/src/programmers/IsParseProgrammer.ts +72 -72
  90. package/src/programmers/IsProgrammer.ts +223 -223
  91. package/src/programmers/IsPruneProgrammer.ts +83 -83
  92. package/src/programmers/IsStringifyProgrammer.ts +77 -77
  93. package/src/programmers/LiteralsProgrammer.ts +65 -65
  94. package/src/programmers/PruneProgrammer.ts +348 -348
  95. package/src/programmers/RandomProgrammer.ts +444 -444
  96. package/src/programmers/StringifyProgrammer.ts +758 -758
  97. package/src/programmers/TypiaProgrammer.ts +141 -141
  98. package/src/programmers/ValidateCloneProgrammer.ts +93 -93
  99. package/src/programmers/ValidateParseProgrammer.ts +78 -78
  100. package/src/programmers/ValidateProgrammer.ts +317 -317
  101. package/src/programmers/ValidatePruneProgrammer.ts +86 -86
  102. package/src/programmers/ValidateStringifyProgrammer.ts +93 -93
  103. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  104. package/src/programmers/helpers/CloneJoiner.ts +138 -138
  105. package/src/programmers/helpers/FunctionImporeter.ts +56 -56
  106. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  107. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  108. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  109. package/src/programmers/helpers/PruneJoiner.ts +156 -156
  110. package/src/programmers/helpers/RandomJoiner.ts +165 -165
  111. package/src/programmers/helpers/RandomRanger.ts +218 -218
  112. package/src/programmers/helpers/StringifyJoinder.ts +118 -118
  113. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  114. package/src/programmers/helpers/UnionExplorer.ts +281 -281
  115. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  116. package/src/programmers/helpers/disable_function_importer_declare.ts +21 -21
  117. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  118. package/src/programmers/internal/application_array.ts +32 -32
  119. package/src/programmers/internal/application_boolean.ts +15 -15
  120. package/src/programmers/internal/application_constant.ts +26 -26
  121. package/src/programmers/internal/application_default.ts +17 -17
  122. package/src/programmers/internal/application_default_string.ts +33 -33
  123. package/src/programmers/internal/application_native.ts +36 -36
  124. package/src/programmers/internal/application_number.ts +71 -71
  125. package/src/programmers/internal/application_object.ts +162 -162
  126. package/src/programmers/internal/application_schema.ts +198 -198
  127. package/src/programmers/internal/application_string.ts +44 -44
  128. package/src/programmers/internal/application_templates.ts +25 -25
  129. package/src/programmers/internal/application_tuple.ts +27 -27
  130. package/src/programmers/internal/check_array.ts +31 -31
  131. package/src/programmers/internal/check_array_length.ts +35 -35
  132. package/src/programmers/internal/check_bigint.ts +95 -95
  133. package/src/programmers/internal/check_custom.ts +32 -32
  134. package/src/programmers/internal/check_dynamic_properties.ts +198 -198
  135. package/src/programmers/internal/check_everything.ts +28 -28
  136. package/src/programmers/internal/check_native.ts +22 -22
  137. package/src/programmers/internal/check_number.ts +177 -177
  138. package/src/programmers/internal/check_object.ts +65 -65
  139. package/src/programmers/internal/check_string.ts +27 -27
  140. package/src/programmers/internal/check_string_tags.ts +68 -68
  141. package/src/programmers/internal/check_template.ts +57 -57
  142. package/src/programmers/internal/check_union_array_like.ts +273 -273
  143. package/src/programmers/internal/check_union_tuple.ts +34 -34
  144. package/src/programmers/internal/decode_union_object.ts +75 -75
  145. package/src/programmers/internal/feature_object_entries.ts +64 -64
  146. package/src/programmers/internal/get_comment_tags.ts +23 -23
  147. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  148. package/src/programmers/internal/prune_object_properties.ts +63 -63
  149. package/src/programmers/internal/random_custom.ts +30 -30
  150. package/src/programmers/internal/stringify_dynamic_properties.ts +173 -173
  151. package/src/programmers/internal/stringify_native.ts +7 -7
  152. package/src/programmers/internal/stringify_regular_properties.ts +89 -89
  153. package/src/programmers/internal/template_to_pattern.ts +15 -15
  154. package/src/schemas/IJsonApplication.ts +13 -13
  155. package/src/schemas/IJsonComponents.ts +33 -33
  156. package/src/schemas/IJsonSchema.ts +134 -134
  157. package/src/transform.ts +39 -39
  158. package/src/transformers/CallExpressionTransformer.ts +183 -183
  159. package/src/transformers/FileTransformer.ts +50 -50
  160. package/src/transformers/IProject.ts +18 -18
  161. package/src/transformers/ITransformOptions.ts +62 -62
  162. package/src/transformers/ImportTransformer.ts +74 -74
  163. package/src/transformers/NodeTransformer.ts +13 -13
  164. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +107 -107
  165. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  166. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  167. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  168. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  169. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  170. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  171. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  172. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  173. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  174. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +43 -43
  175. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  176. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  177. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  178. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  179. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +31 -31
  180. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +56 -56
  181. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  182. package/src/transformers/features/miscellaneous/RandomTransformer.ts +46 -46
  183. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  184. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  185. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  186. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  187. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  188. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  189. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  190. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  191. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  192. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +12 -12
  193. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  194. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  195. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +12 -12
  196. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  197. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  198. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  199. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  200. package/src/transformers/features/validators/CreateAssertTransformer.ts +13 -13
  201. package/src/transformers/features/validators/CreateIsTransformer.ts +11 -11
  202. package/src/transformers/features/validators/CreateValidateTransformer.ts +13 -13
  203. package/src/transformers/features/validators/IsTransformer.ts +11 -11
  204. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  205. package/src/transformers/internal/GenericTransformer.ts +101 -101
  206. package/src/typings/Atomic.ts +17 -17
  207. package/src/typings/ClassProperties.ts +5 -5
  208. package/src/typings/Customizable.ts +5 -5
  209. package/src/typings/OmitNever.ts +3 -3
  210. package/src/typings/SpecialFields.ts +3 -3
  211. package/src/typings/Writable.ts +11 -11
  212. package/src/utils/ArrayUtil.ts +44 -44
  213. package/src/utils/Escaper.ts +45 -45
  214. package/src/utils/MapUtil.ts +12 -12
  215. package/src/utils/PatternUtil.ts +30 -30
  216. package/src/utils/RandomGenerator.ts +81 -81
  217. package/src/utils/Singleton.ts +17 -17
  218. package/src/utils/TsNodeUtil.ts +17 -17
  219. package/src/utils/TsSymbolUtil.ts +153 -153
  220. package/src/utils/TsTypeUtil.ts +38 -38
@@ -1,33 +1,33 @@
1
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
-
3
- import { IJsonSchema } from "./IJsonSchema";
4
-
5
- export interface IJsonComponents {
6
- schemas: Record<string, IJsonComponents.IObject>;
7
- }
8
- export namespace IJsonComponents {
9
- export interface IObject {
10
- /**
11
- * Used only when ajv mode.
12
- */
13
- $id?: string;
14
- $recursiveAnchor?: boolean;
15
-
16
- type: "object";
17
-
18
- /**
19
- * Only when swagger mode.
20
- */
21
- nullable?: boolean;
22
-
23
- properties: Record<string, IJsonSchema>;
24
- patternProperties?: Record<string, IJsonSchema>;
25
- additionalProperties?: IJsonSchema;
26
-
27
- required?: string[];
28
- description?: string;
29
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
30
- "x-typia-patternProperties"?: Record<string, IJsonSchema>;
31
- "x-typia-additionalProperties"?: IJsonSchema;
32
- }
33
- }
1
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
+
3
+ import { IJsonSchema } from "./IJsonSchema";
4
+
5
+ export interface IJsonComponents {
6
+ schemas: Record<string, IJsonComponents.IObject>;
7
+ }
8
+ export namespace IJsonComponents {
9
+ export interface IObject {
10
+ /**
11
+ * Used only when ajv mode.
12
+ */
13
+ $id?: string;
14
+ $recursiveAnchor?: boolean;
15
+
16
+ type: "object";
17
+
18
+ /**
19
+ * Only when swagger mode.
20
+ */
21
+ nullable?: boolean;
22
+
23
+ properties: Record<string, IJsonSchema>;
24
+ patternProperties?: Record<string, IJsonSchema>;
25
+ additionalProperties?: IJsonSchema;
26
+
27
+ required?: string[];
28
+ description?: string;
29
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
30
+ "x-typia-patternProperties"?: Record<string, IJsonSchema>;
31
+ "x-typia-additionalProperties"?: IJsonSchema;
32
+ }
33
+ }
@@ -1,134 +1,134 @@
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.Known | IJsonSchema.IUnknown;
7
- export namespace IJsonSchema {
8
- export type Known =
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
- export interface IUnknown extends IAttribute {
24
- type?: undefined;
25
- }
26
-
27
- /**
28
- * @deprecated Use {@link Known} type instead.
29
- */
30
- export type NotUnknown = Known;
31
-
32
- /* -----------------------------------------------------------
33
- ATOMICS
34
- ----------------------------------------------------------- */
35
- export interface IEnumeration<
36
- Literal extends Exclude<Atomic.Literal, "bigint">,
37
- > extends IAtomic<Literal> {
38
- enum: Array<Atomic.Mapper[Literal]>;
39
- }
40
- export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
41
- extends ISignificant<Literal> {
42
- default?: Atomic.Mapper[Literal];
43
- }
44
- export interface IString extends IAtomic<"string"> {
45
- /**
46
- * @type uint
47
- */
48
- minLength?: number;
49
- /**
50
- * @type uint
51
- */
52
- maxLength?: number;
53
- pattern?: string;
54
- format?: string;
55
- }
56
- export interface INumber extends IAtomic<"number"> {
57
- minimum?: number;
58
- maximum?: number;
59
- exclusiveMinimum?: boolean;
60
- exclusiveMaximum?: boolean;
61
- multipleOf?: number;
62
- }
63
- export interface IInteger extends IAtomic<"integer"> {
64
- /**
65
- * @type int
66
- */
67
- minimum?: number;
68
- /**
69
- * @type int
70
- */
71
- maximum?: number;
72
- exclusiveMinimum?: boolean;
73
- exclusiveMaximum?: boolean;
74
- /**
75
- * @type int
76
- */
77
- multipleOf?: number;
78
- }
79
- export interface IBoolean extends IAtomic<"boolean"> {}
80
-
81
- /* -----------------------------------------------------------
82
- OBJECTS
83
- ----------------------------------------------------------- */
84
- export interface IArray extends ISignificant<"array"> {
85
- items: IJsonSchema;
86
- /**
87
- * @type uint
88
- */
89
- minItems?: number;
90
- /**
91
- * @type uint
92
- */
93
- maxItems?: number;
94
- "x-typia-tuple"?: ITuple;
95
- }
96
- export interface ITuple extends ISignificant<"array"> {
97
- items: IJsonSchema[];
98
- }
99
- export interface IReference extends IAttribute {
100
- $ref: string;
101
- }
102
- export interface IRecursiveReference extends IAttribute {
103
- $recursiveRef: string;
104
- }
105
- export interface INullOnly extends IAttribute {
106
- type: "null";
107
- }
108
-
109
- /* -----------------------------------------------------------
110
- MISCELLANEOUS
111
- ----------------------------------------------------------- */
112
- export interface IOneOf extends IAttribute {
113
- oneOf: IJsonSchema[];
114
- }
115
-
116
- export interface ISignificant<Literal extends string> extends IAttribute {
117
- type: Literal;
118
-
119
- /**
120
- * Only when swagger mode.
121
- */
122
- nullable?: boolean;
123
- }
124
- export interface IAttribute {
125
- deprecated?: boolean;
126
- title?: string;
127
- description?: string;
128
- "x-typia-metaTags"?: IMetadataTag[];
129
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
130
- "x-typia-required"?: boolean;
131
- "x-typia-optional"?: boolean;
132
- "x-typia-rest"?: boolean;
133
- }
134
- }
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.Known | IJsonSchema.IUnknown;
7
+ export namespace IJsonSchema {
8
+ export type Known =
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
+ export interface IUnknown extends IAttribute {
24
+ type?: undefined;
25
+ }
26
+
27
+ /**
28
+ * @deprecated Use {@link Known} type instead.
29
+ */
30
+ export type NotUnknown = Known;
31
+
32
+ /* -----------------------------------------------------------
33
+ ATOMICS
34
+ ----------------------------------------------------------- */
35
+ export interface IEnumeration<
36
+ Literal extends Exclude<Atomic.Literal, "bigint">,
37
+ > extends IAtomic<Literal> {
38
+ enum: Array<Atomic.Mapper[Literal]>;
39
+ }
40
+ export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
41
+ extends ISignificant<Literal> {
42
+ default?: Atomic.Mapper[Literal];
43
+ }
44
+ export interface IString extends IAtomic<"string"> {
45
+ /**
46
+ * @type uint
47
+ */
48
+ minLength?: number;
49
+ /**
50
+ * @type uint
51
+ */
52
+ maxLength?: number;
53
+ pattern?: string;
54
+ format?: string;
55
+ }
56
+ export interface INumber extends IAtomic<"number"> {
57
+ minimum?: number;
58
+ maximum?: number;
59
+ exclusiveMinimum?: boolean;
60
+ exclusiveMaximum?: boolean;
61
+ multipleOf?: number;
62
+ }
63
+ export interface IInteger extends IAtomic<"integer"> {
64
+ /**
65
+ * @type int
66
+ */
67
+ minimum?: number;
68
+ /**
69
+ * @type int
70
+ */
71
+ maximum?: number;
72
+ exclusiveMinimum?: boolean;
73
+ exclusiveMaximum?: boolean;
74
+ /**
75
+ * @type int
76
+ */
77
+ multipleOf?: number;
78
+ }
79
+ export interface IBoolean extends IAtomic<"boolean"> {}
80
+
81
+ /* -----------------------------------------------------------
82
+ OBJECTS
83
+ ----------------------------------------------------------- */
84
+ export interface IArray extends ISignificant<"array"> {
85
+ items: IJsonSchema;
86
+ /**
87
+ * @type uint
88
+ */
89
+ minItems?: number;
90
+ /**
91
+ * @type uint
92
+ */
93
+ maxItems?: number;
94
+ "x-typia-tuple"?: ITuple;
95
+ }
96
+ export interface ITuple extends ISignificant<"array"> {
97
+ items: IJsonSchema[];
98
+ }
99
+ export interface IReference extends IAttribute {
100
+ $ref: string;
101
+ }
102
+ export interface IRecursiveReference extends IAttribute {
103
+ $recursiveRef: string;
104
+ }
105
+ export interface INullOnly extends IAttribute {
106
+ type: "null";
107
+ }
108
+
109
+ /* -----------------------------------------------------------
110
+ MISCELLANEOUS
111
+ ----------------------------------------------------------- */
112
+ export interface IOneOf extends IAttribute {
113
+ oneOf: IJsonSchema[];
114
+ }
115
+
116
+ export interface ISignificant<Literal extends string> extends IAttribute {
117
+ type: Literal;
118
+
119
+ /**
120
+ * Only when swagger mode.
121
+ */
122
+ nullable?: boolean;
123
+ }
124
+ export interface IAttribute {
125
+ deprecated?: boolean;
126
+ title?: string;
127
+ description?: string;
128
+ "x-typia-metaTags"?: IMetadataTag[];
129
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
130
+ "x-typia-required"?: boolean;
131
+ "x-typia-optional"?: boolean;
132
+ "x-typia-rest"?: boolean;
133
+ }
134
+ }
package/src/transform.ts CHANGED
@@ -1,39 +1,39 @@
1
- import type ts from "typescript/lib/tsclibrary";
2
-
3
- import { FileTransformer } from "./transformers/FileTransformer";
4
- import { ITransformOptions } from "./transformers/ITransformOptions";
5
-
6
- const regular: ts.CustomTransformersModuleFactory = ({ typescript }) => ({
7
- create: (info) => ({
8
- before: [
9
- (context) => (file) =>
10
- FileTransformer.transform({
11
- tsc: typescript,
12
- program: info.program,
13
- compilerOptions: info.program.getCompilerOptions(),
14
- checker: info.program.getTypeChecker(),
15
- printer: typescript.createPrinter(),
16
- options: info.config ?? {},
17
- })(context)(file),
18
- ],
19
- }),
20
- });
21
-
22
- const patch = (
23
- program: ts.Program,
24
- options?: ITransformOptions,
25
- ): ts.TransformerFactory<ts.SourceFile> => {
26
- const tsc = require("ts");
27
- return FileTransformer.transform({
28
- tsc,
29
- program,
30
- compilerOptions: program.getCompilerOptions(),
31
- checker: program.getTypeChecker(),
32
- printer: tsc.createPrinter(),
33
- options: options || {},
34
- });
35
- };
36
-
37
- const transform = (x: any, y?: any) =>
38
- x.typescript ? regular(x) : patch(x, y);
39
- export = transform as typeof regular | typeof patch;
1
+ import type ts from "typescript/lib/tsclibrary";
2
+
3
+ import { FileTransformer } from "./transformers/FileTransformer";
4
+ import { ITransformOptions } from "./transformers/ITransformOptions";
5
+
6
+ const regular: ts.CustomTransformersModuleFactory = ({ typescript }) => ({
7
+ create: (info) => ({
8
+ before: [
9
+ (context) => (file) =>
10
+ FileTransformer.transform({
11
+ tsc: typescript,
12
+ program: info.program,
13
+ compilerOptions: info.program.getCompilerOptions(),
14
+ checker: info.program.getTypeChecker(),
15
+ printer: typescript.createPrinter(),
16
+ options: info.config ?? {},
17
+ })(context)(file),
18
+ ],
19
+ }),
20
+ });
21
+
22
+ const patch = (
23
+ program: ts.Program,
24
+ options?: ITransformOptions,
25
+ ): ts.TransformerFactory<ts.SourceFile> => {
26
+ const tsc = require("typescript");
27
+ return FileTransformer.transform({
28
+ tsc,
29
+ program,
30
+ compilerOptions: program.getCompilerOptions(),
31
+ checker: program.getTypeChecker(),
32
+ printer: tsc.createPrinter(),
33
+ options: options || {},
34
+ });
35
+ };
36
+
37
+ const transform = (x: any, y?: any) =>
38
+ x.typescript ? regular(x) : patch(x, y);
39
+ export = transform as typeof regular | typeof patch;