typia 3.4.13 → 3.4.15

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 (270) hide show
  1. package/README.md +9 -8
  2. package/lib/executable/internal/TypiaSetupWizard.js +1 -1
  3. package/lib/executable/internal/TypiaSetupWizard.js.map +1 -1
  4. package/lib/factories/MetadataFactory.d.ts +1 -0
  5. package/lib/factories/MetadataFactory.js +1 -1
  6. package/lib/factories/MetadataFactory.js.map +1 -1
  7. package/lib/factories/MetadataTagFactory.js +4 -1
  8. package/lib/factories/MetadataTagFactory.js.map +1 -1
  9. package/lib/factories/internal/{MetadataHelper.d.ts → metadata/MetadataHelper.d.ts} +1 -1
  10. package/lib/factories/internal/{MetadataHelper.js → metadata/MetadataHelper.js} +1 -1
  11. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -0
  12. package/lib/factories/internal/{emplace_metadata_object.d.ts → metadata/emplace_metadata_object.d.ts} +3 -3
  13. package/lib/factories/internal/{emplace_metadata_object.js → metadata/emplace_metadata_object.js} +5 -5
  14. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -0
  15. package/lib/factories/internal/{explore_metadata.d.ts → metadata/explore_metadata.d.ts} +3 -3
  16. package/lib/factories/internal/{explore_metadata.js → metadata/explore_metadata.js} +5 -3
  17. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -0
  18. package/lib/factories/internal/{iterate_metadata.d.ts → metadata/iterate_metadata.d.ts} +3 -3
  19. package/lib/factories/internal/{iterate_metadata.js → metadata/iterate_metadata.js} +1 -1
  20. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -0
  21. package/lib/factories/internal/{iterate_metadata_array.d.ts → metadata/iterate_metadata_array.d.ts} +3 -3
  22. package/lib/factories/internal/{iterate_metadata_array.js → metadata/iterate_metadata_array.js} +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -0
  24. package/lib/factories/internal/{iterate_metadata_atomic.d.ts → metadata/iterate_metadata_atomic.d.ts} +1 -1
  25. package/lib/factories/internal/{iterate_metadata_atomic.js → metadata/iterate_metadata_atomic.js} +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -0
  27. package/lib/factories/internal/{iterate_metadata_coalesce.d.ts → metadata/iterate_metadata_coalesce.d.ts} +1 -1
  28. package/lib/factories/internal/{iterate_metadata_coalesce.js → metadata/iterate_metadata_coalesce.js} +2 -2
  29. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -0
  30. package/lib/factories/internal/{iterate_metadata_constant.d.ts → metadata/iterate_metadata_constant.d.ts} +2 -2
  31. package/lib/factories/internal/{iterate_metadata_constant.js → metadata/iterate_metadata_constant.js} +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -0
  33. package/lib/factories/internal/{iterate_metadata_map.d.ts → metadata/iterate_metadata_map.d.ts} +3 -3
  34. package/lib/factories/internal/{iterate_metadata_map.js → metadata/iterate_metadata_map.js} +2 -2
  35. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -0
  36. package/lib/factories/internal/{iterate_metadata_native.d.ts → metadata/iterate_metadata_native.d.ts} +1 -1
  37. package/lib/factories/internal/{iterate_metadata_native.js → metadata/iterate_metadata_native.js} +2 -2
  38. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -0
  39. package/lib/factories/internal/{iterate_metadata_object.d.ts → metadata/iterate_metadata_object.d.ts} +3 -3
  40. package/lib/factories/internal/{iterate_metadata_object.js → metadata/iterate_metadata_object.js} +7 -5
  41. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -0
  42. package/lib/factories/internal/{iterate_metadata_resolve.d.ts → metadata/iterate_metadata_resolve.d.ts} +3 -3
  43. package/lib/factories/internal/{iterate_metadata_resolve.js → metadata/iterate_metadata_resolve.js} +2 -2
  44. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -0
  45. package/lib/factories/internal/{iterate_metadata_set.d.ts → metadata/iterate_metadata_set.d.ts} +3 -3
  46. package/lib/factories/internal/{iterate_metadata_set.js → metadata/iterate_metadata_set.js} +2 -2
  47. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -0
  48. package/lib/factories/internal/{iterate_metadata_template.d.ts → metadata/iterate_metadata_template.d.ts} +3 -3
  49. package/lib/factories/internal/{iterate_metadata_template.js → metadata/iterate_metadata_template.js} +0 -0
  50. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -0
  51. package/lib/factories/internal/{iterate_metadata_tuple.d.ts → metadata/iterate_metadata_tuple.d.ts} +3 -3
  52. package/lib/factories/internal/{iterate_metadata_tuple.js → metadata/iterate_metadata_tuple.js} +3 -3
  53. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -0
  54. package/lib/factories/internal/{iterate_metadata_union.d.ts → metadata/iterate_metadata_union.d.ts} +3 -3
  55. package/lib/factories/internal/{iterate_metadata_union.js → metadata/iterate_metadata_union.js} +3 -3
  56. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -0
  57. package/lib/functional/$number.js +2 -9
  58. package/lib/functional/$number.js.map +1 -1
  59. package/lib/programmers/AssertParseProgrammer.js +12 -1
  60. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  61. package/lib/programmers/AssertProgrammer.js +2 -1
  62. package/lib/programmers/AssertProgrammer.js.map +1 -1
  63. package/lib/programmers/AssertStringifyProgrammer.js +13 -2
  64. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  65. package/lib/programmers/CheckerProgrammer.js +6 -0
  66. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  67. package/lib/programmers/IsParseProgrammer.js +12 -1
  68. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  69. package/lib/programmers/IsProgrammer.js +5 -2
  70. package/lib/programmers/IsProgrammer.js.map +1 -1
  71. package/lib/programmers/IsStringifyProgrammer.js +13 -2
  72. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  73. package/lib/programmers/StringifyProgrammer.js +5 -0
  74. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  75. package/lib/programmers/ValidateParseProgrammer.js +12 -1
  76. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  77. package/lib/programmers/ValidateProgrammer.js +2 -1
  78. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  79. package/lib/programmers/ValidateStringifyProgrammer.js +13 -2
  80. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  81. package/lib/programmers/helpers/OptionPredicator.d.ts +2 -1
  82. package/lib/programmers/helpers/OptionPredicator.js +7 -3
  83. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  84. package/lib/programmers/internal/application_schema.js +7 -3
  85. package/lib/programmers/internal/application_schema.js.map +1 -1
  86. package/lib/programmers/internal/check_bigint.d.ts +3 -0
  87. package/lib/programmers/internal/check_bigint.js +97 -0
  88. package/lib/programmers/internal/check_bigint.js.map +1 -0
  89. package/lib/programmers/internal/check_number.js +21 -22
  90. package/lib/programmers/internal/check_number.js.map +1 -1
  91. package/lib/schemas/IJsonSchema.d.ts +3 -5
  92. package/lib/transformers/ITransformOptions.d.ts +42 -1
  93. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +4 -0
  94. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  95. package/lib/transformers/features/stringifiers/StringifyTransformer.js +12 -1
  96. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
  97. package/package.json +3 -2
  98. package/src/IValidation.ts +21 -21
  99. package/src/Primitive.ts +82 -82
  100. package/src/TypeGuardError.ts +36 -36
  101. package/src/executable/internal/CommandParser.ts +15 -15
  102. package/src/executable/internal/TypiaSetupWizard.ts +173 -175
  103. package/src/executable/typia.ts +46 -46
  104. package/src/factories/CommentFactory.ts +10 -10
  105. package/src/factories/ExpressionFactory.ts +66 -66
  106. package/src/factories/IdentifierFactory.ts +72 -72
  107. package/src/factories/LiteralFactory.ts +44 -44
  108. package/src/factories/MetadataCollection.ts +122 -122
  109. package/src/factories/MetadataFactory.ts +47 -46
  110. package/src/factories/MetadataTagFactory.ts +351 -347
  111. package/src/factories/StatementFactory.ts +60 -60
  112. package/src/factories/TemplateFactory.ts +56 -56
  113. package/src/factories/TypeFactory.ts +101 -101
  114. package/src/factories/ValueFactory.ts +12 -12
  115. package/src/factories/internal/{MetadataHelper.ts → metadata/MetadataHelper.ts} +12 -12
  116. package/src/factories/internal/{emplace_metadata_object.ts → metadata/emplace_metadata_object.ts} +140 -140
  117. package/src/factories/internal/{explore_metadata.ts → metadata/explore_metadata.ts} +92 -91
  118. package/src/factories/internal/{iterate_metadata.ts → metadata/iterate_metadata.ts} +80 -80
  119. package/src/factories/internal/{iterate_metadata_array.ts → metadata/iterate_metadata_array.ts} +29 -29
  120. package/src/factories/internal/{iterate_metadata_atomic.ts → metadata/iterate_metadata_atomic.ts} +59 -59
  121. package/src/factories/internal/{iterate_metadata_coalesce.ts → metadata/iterate_metadata_coalesce.ts} +33 -33
  122. package/src/factories/internal/{iterate_metadata_constant.ts → metadata/iterate_metadata_constant.ts} +58 -58
  123. package/src/factories/internal/{iterate_metadata_map.ts → metadata/iterate_metadata_map.ts} +41 -41
  124. package/src/factories/internal/{iterate_metadata_native.ts → metadata/iterate_metadata_native.ts} +227 -227
  125. package/src/factories/internal/{iterate_metadata_object.ts → metadata/iterate_metadata_object.ts} +48 -45
  126. package/src/factories/internal/{iterate_metadata_resolve.ts → metadata/iterate_metadata_resolve.ts} +27 -27
  127. package/src/factories/internal/{iterate_metadata_set.ts → metadata/iterate_metadata_set.ts} +33 -33
  128. package/src/factories/internal/{iterate_metadata_template.ts → metadata/iterate_metadata_template.ts} +38 -38
  129. package/src/factories/internal/{iterate_metadata_tuple.ts → metadata/iterate_metadata_tuple.ts} +45 -45
  130. package/src/factories/internal/{iterate_metadata_union.ts → metadata/iterate_metadata_union.ts} +59 -59
  131. package/src/functional/$every.ts +11 -11
  132. package/src/functional/$guard.ts +35 -35
  133. package/src/functional/$is_email.ts +5 -5
  134. package/src/functional/$is_ipv4.ts +5 -5
  135. package/src/functional/$is_ipv6.ts +5 -5
  136. package/src/functional/$is_url.ts +5 -5
  137. package/src/functional/$is_uuid.ts +5 -5
  138. package/src/functional/$join.ts +50 -50
  139. package/src/functional/$number.ts +12 -19
  140. package/src/functional/$report.ts +15 -15
  141. package/src/functional/$rest.ts +3 -3
  142. package/src/functional/$string.ts +37 -37
  143. package/src/functional/$tail.ts +6 -6
  144. package/src/index.ts +4 -4
  145. package/src/metadata/IJsDocTagInfo.ts +10 -10
  146. package/src/metadata/IMetadata.ts +25 -25
  147. package/src/metadata/IMetadataApplication.ts +7 -7
  148. package/src/metadata/IMetadataConstant.ts +16 -16
  149. package/src/metadata/IMetadataEntry.ts +6 -6
  150. package/src/metadata/IMetadataObject.ts +29 -29
  151. package/src/metadata/IMetadataProperty.ts +11 -11
  152. package/src/metadata/IMetadataTag.ts +122 -122
  153. package/src/metadata/Metadata.ts +477 -477
  154. package/src/metadata/MetadataConstant.ts +3 -3
  155. package/src/metadata/MetadataObject.ts +131 -131
  156. package/src/metadata/MetadataProperty.ts +64 -64
  157. package/src/module.ts +1535 -1535
  158. package/src/programmers/ApplicationProgrammer.ts +55 -55
  159. package/src/programmers/AssertParseProgrammer.ts +55 -45
  160. package/src/programmers/AssertProgrammer.ts +445 -444
  161. package/src/programmers/AssertStringifyProgrammer.ts +65 -45
  162. package/src/programmers/CheckerProgrammer.ts +810 -804
  163. package/src/programmers/FeatureProgrammer.ts +327 -327
  164. package/src/programmers/IsParseProgrammer.ts +61 -51
  165. package/src/programmers/IsProgrammer.ts +175 -172
  166. package/src/programmers/IsStringifyProgrammer.ts +69 -49
  167. package/src/programmers/StringifyProgrammer.ts +762 -756
  168. package/src/programmers/ValidateParseProgrammer.ts +59 -49
  169. package/src/programmers/ValidateProgrammer.ts +237 -236
  170. package/src/programmers/ValidateStringifyProgrammer.ts +80 -60
  171. package/src/programmers/helpers/AtomicPredicator.ts +15 -15
  172. package/src/programmers/helpers/FunctionImporeter.ts +31 -31
  173. package/src/programmers/helpers/IExpressionEntry.ts +10 -10
  174. package/src/programmers/helpers/OptionPredicator.ts +15 -11
  175. package/src/programmers/helpers/StringifyJoinder.ts +111 -111
  176. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  177. package/src/programmers/helpers/UnionExplorer.ts +437 -437
  178. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  179. package/src/programmers/internal/application_array.ts +45 -45
  180. package/src/programmers/internal/application_boolean.ts +17 -17
  181. package/src/programmers/internal/application_constant.ts +29 -29
  182. package/src/programmers/internal/application_default.ts +17 -17
  183. package/src/programmers/internal/application_default_string.ts +32 -32
  184. package/src/programmers/internal/application_native.ts +29 -29
  185. package/src/programmers/internal/application_number.ts +76 -76
  186. package/src/programmers/internal/application_object.ts +103 -103
  187. package/src/programmers/internal/application_schema.ts +228 -221
  188. package/src/programmers/internal/application_string.ts +49 -49
  189. package/src/programmers/internal/application_templates.ts +27 -27
  190. package/src/programmers/internal/application_tuple.ts +25 -25
  191. package/src/programmers/internal/check_array.ts +44 -44
  192. package/src/programmers/internal/check_bigint.ts +85 -0
  193. package/src/programmers/internal/check_dynamic_properties.ts +146 -146
  194. package/src/programmers/internal/check_everything.ts +25 -25
  195. package/src/programmers/internal/check_length.ts +46 -46
  196. package/src/programmers/internal/check_native.ts +9 -9
  197. package/src/programmers/internal/check_number.ts +175 -178
  198. package/src/programmers/internal/check_object.ts +42 -42
  199. package/src/programmers/internal/check_string.ts +24 -24
  200. package/src/programmers/internal/check_string_tags.ts +63 -63
  201. package/src/programmers/internal/check_template.ts +50 -50
  202. package/src/programmers/internal/decode_union_object.ts +73 -73
  203. package/src/programmers/internal/feature_object_entries.ts +49 -49
  204. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  205. package/src/programmers/internal/stringify_dynamic_properties.ts +164 -164
  206. package/src/programmers/internal/stringify_native.ts +8 -8
  207. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  208. package/src/programmers/internal/template_to_pattern.ts +15 -15
  209. package/src/schemas/IJsonApplication.ts +9 -9
  210. package/src/schemas/IJsonComponents.ts +24 -24
  211. package/src/schemas/IJsonSchema.ts +90 -92
  212. package/src/transform.ts +20 -20
  213. package/src/transformers/CallExpressionTransformer.ts +124 -124
  214. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  215. package/src/transformers/FileTransformer.ts +49 -49
  216. package/src/transformers/IProject.ts +11 -11
  217. package/src/transformers/ITransformOptions.ts +47 -4
  218. package/src/transformers/NodeTransformer.ts +19 -19
  219. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +119 -114
  220. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
  221. package/src/transformers/features/parsers/AssertParseTransformer.ts +36 -36
  222. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +32 -32
  223. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +32 -32
  224. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +32 -32
  225. package/src/transformers/features/parsers/IsParseTransformer.ts +36 -36
  226. package/src/transformers/features/parsers/ValidateParseTransformer.ts +36 -36
  227. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +38 -38
  228. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +32 -32
  229. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +32 -32
  230. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +31 -31
  231. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +32 -32
  232. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +38 -38
  233. package/src/transformers/features/stringifiers/StringifyTransformer.ts +46 -36
  234. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +38 -38
  235. package/src/transformers/features/validators/AssertTransformer.ts +43 -43
  236. package/src/transformers/features/validators/CreateAssertTransformer.ts +35 -35
  237. package/src/transformers/features/validators/CreateIsTransformer.ts +35 -35
  238. package/src/transformers/features/validators/CreateValidateTransformer.ts +35 -35
  239. package/src/transformers/features/validators/IsTransformer.ts +43 -43
  240. package/src/transformers/features/validators/ValidateTransformer.ts +43 -43
  241. package/src/typings/Atomic.ts +17 -17
  242. package/src/typings/ClassProperties.ts +5 -5
  243. package/src/typings/OmitNever.ts +3 -3
  244. package/src/typings/SpecialFields.ts +3 -3
  245. package/src/typings/Writable.ts +11 -11
  246. package/src/utils/ArrayUtil.ts +49 -49
  247. package/src/utils/Escaper.ts +50 -50
  248. package/src/utils/MapUtil.ts +14 -14
  249. package/src/utils/PatternUtil.ts +30 -30
  250. package/src/utils/Singleton.ts +17 -17
  251. package/lib/factories/internal/MetadataHelper.js.map +0 -1
  252. package/lib/factories/internal/emplace_metadata_object.js.map +0 -1
  253. package/lib/factories/internal/explore_metadata.js.map +0 -1
  254. package/lib/factories/internal/iterate_metadata.js.map +0 -1
  255. package/lib/factories/internal/iterate_metadata_array.js.map +0 -1
  256. package/lib/factories/internal/iterate_metadata_atomic.js.map +0 -1
  257. package/lib/factories/internal/iterate_metadata_coalesce.js.map +0 -1
  258. package/lib/factories/internal/iterate_metadata_constant.js.map +0 -1
  259. package/lib/factories/internal/iterate_metadata_map.js.map +0 -1
  260. package/lib/factories/internal/iterate_metadata_native.js.map +0 -1
  261. package/lib/factories/internal/iterate_metadata_object.js.map +0 -1
  262. package/lib/factories/internal/iterate_metadata_resolve.js.map +0 -1
  263. package/lib/factories/internal/iterate_metadata_set.js.map +0 -1
  264. package/lib/factories/internal/iterate_metadata_template.js.map +0 -1
  265. package/lib/factories/internal/iterate_metadata_tuple.js.map +0 -1
  266. package/lib/factories/internal/iterate_metadata_union.js.map +0 -1
  267. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.d.ts +0 -5
  268. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js +0 -29
  269. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js.map +0 -1
  270. package/src/transformers/features/miscellaneous/CreateInstanceTransformer.ts +0 -41
@@ -1,92 +1,90 @@
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<"bigint">
12
- | IEnumeration<"string">
13
- | IBoolean
14
- | INumber
15
- | IBigInt
16
- | IString
17
- | IArray
18
- | ITuple
19
- | IOneOf
20
- | IReference
21
- | IRecursiveReference
22
- | INullOnly;
23
-
24
- /* -----------------------------------------------------------
25
- ATOMICS
26
- ----------------------------------------------------------- */
27
- export interface IEnumeration<Literal extends Atomic.Literal>
28
- extends IAtomic<Literal> {
29
- enum: Array<Atomic.Mapper[Literal]>;
30
- }
31
- export interface IAtomic<Literal extends Atomic.Literal>
32
- extends ISignificant<Literal> {
33
- default?: Atomic.Mapper[Literal];
34
- }
35
- export interface IString extends IAtomic<"string"> {
36
- minLength?: number;
37
- maxLength?: number;
38
- pattern?: string;
39
- format?: string;
40
- }
41
- export interface INumber extends IAtomic<"number" | "integer"> {
42
- minimum?: number;
43
- maximum?: number;
44
- exclusiveMinimum?: number;
45
- exclusiveMaximum?: number;
46
- multipleOf?: number;
47
- }
48
- export interface IBoolean extends IAtomic<"boolean"> {}
49
- export interface IBigInt extends IAtomic<"bigint"> {}
50
-
51
- /* -----------------------------------------------------------
52
- OBJECTS
53
- ----------------------------------------------------------- */
54
- export interface IArray extends ISignificant<"array"> {
55
- items: IJsonSchema;
56
- minItems?: number;
57
- maxItems?: number;
58
- }
59
- export interface ITuple extends ISignificant<"array"> {
60
- items: IJsonSchema[];
61
- }
62
- export interface IReference extends IAttribute {
63
- $ref: string;
64
- }
65
- export interface IRecursiveReference extends IAttribute {
66
- $recursiveRef: string;
67
- }
68
- export interface INullOnly extends IAttribute {
69
- type: "null";
70
- }
71
-
72
- /* -----------------------------------------------------------
73
- MISCELLANEOUS
74
- ----------------------------------------------------------- */
75
- export interface IOneOf extends IAttribute {
76
- oneOf: IJsonSchema[];
77
- }
78
- export interface IUnknown {}
79
-
80
- export interface ISignificant<Literal extends string> extends IAttribute {
81
- type: Literal;
82
- nullable: boolean;
83
- }
84
- export interface IAttribute {
85
- deprecated?: boolean;
86
- title?: string;
87
- description?: string;
88
- "x-typia-metaTags"?: IMetadataTag[];
89
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
90
- "x-typia-required"?: boolean;
91
- }
92
- }
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
+ | INumber
14
+ | IString
15
+ | IArray
16
+ | ITuple
17
+ | IOneOf
18
+ | IReference
19
+ | IRecursiveReference
20
+ | INullOnly;
21
+
22
+ /* -----------------------------------------------------------
23
+ ATOMICS
24
+ ----------------------------------------------------------- */
25
+ export interface IEnumeration<
26
+ Literal extends Exclude<Atomic.Literal, "bigint">,
27
+ > extends IAtomic<Literal> {
28
+ enum: Array<Atomic.Mapper[Literal]>;
29
+ }
30
+ export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
31
+ extends ISignificant<Literal> {
32
+ default?: Atomic.Mapper[Literal];
33
+ }
34
+ export interface IString extends IAtomic<"string"> {
35
+ minLength?: number;
36
+ maxLength?: number;
37
+ pattern?: string;
38
+ format?: string;
39
+ }
40
+ export interface INumber extends IAtomic<"number" | "integer"> {
41
+ minimum?: number;
42
+ maximum?: number;
43
+ exclusiveMinimum?: number;
44
+ exclusiveMaximum?: number;
45
+ multipleOf?: number;
46
+ }
47
+ export interface IBoolean extends IAtomic<"boolean"> {}
48
+
49
+ /* -----------------------------------------------------------
50
+ OBJECTS
51
+ ----------------------------------------------------------- */
52
+ export interface IArray extends ISignificant<"array"> {
53
+ items: IJsonSchema;
54
+ minItems?: number;
55
+ maxItems?: number;
56
+ }
57
+ export interface ITuple extends ISignificant<"array"> {
58
+ items: IJsonSchema[];
59
+ }
60
+ export interface IReference extends IAttribute {
61
+ $ref: string;
62
+ }
63
+ export interface IRecursiveReference extends IAttribute {
64
+ $recursiveRef: string;
65
+ }
66
+ export interface INullOnly extends IAttribute {
67
+ type: "null";
68
+ }
69
+
70
+ /* -----------------------------------------------------------
71
+ MISCELLANEOUS
72
+ ----------------------------------------------------------- */
73
+ export interface IOneOf extends IAttribute {
74
+ oneOf: IJsonSchema[];
75
+ }
76
+ export interface IUnknown {}
77
+
78
+ export interface ISignificant<Literal extends string> extends IAttribute {
79
+ type: Literal;
80
+ nullable: boolean;
81
+ }
82
+ export interface IAttribute {
83
+ deprecated?: boolean;
84
+ title?: string;
85
+ description?: string;
86
+ "x-typia-metaTags"?: IMetadataTag[];
87
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
88
+ "x-typia-required"?: boolean;
89
+ }
90
+ }
package/src/transform.ts CHANGED
@@ -1,20 +1,20 @@
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 default 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
- }
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 default 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
+ }
@@ -1,124 +1,124 @@
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 { MetadataTransformer } from "./features/miscellaneous/MetadataTransformer";
7
- import { AssertParseTransformer } from "./features/parsers/AssertParseTransformer";
8
- import { CreateAssertParseTransformer } from "./features/parsers/CreateAssertParseTransformer";
9
- import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransformer";
10
- import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
11
- import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
12
- import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
13
- import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
14
- import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
15
- import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
16
- import { CreateStringifyTransformer } from "./features/stringifiers/CreateStringifyTransformer";
17
- import { CreateValidateStringifyTransformer } from "./features/stringifiers/CreateValidateStringifyProgrammer";
18
- import { IsStringifyTransformer } from "./features/stringifiers/IsStringifyTransformer";
19
- import { StringifyTransformer } from "./features/stringifiers/StringifyTransformer";
20
- import { ValidateStringifyTransformer } from "./features/stringifiers/ValidateStringifyTransformer";
21
- import { AssertTransformer } from "./features/validators/AssertTransformer";
22
- import { CreateAssertTransformer } from "./features/validators/CreateAssertTransformer";
23
- import { CreateIsTransformer } from "./features/validators/CreateIsTransformer";
24
- import { CreateValidateTransformer } from "./features/validators/CreateValidateTransformer";
25
- import { IsTransformer } from "./features/validators/IsTransformer";
26
- import { ValidateTransformer } from "./features/validators/ValidateTransformer";
27
-
28
- export namespace CallExpressionTransformer {
29
- export function transform(
30
- project: IProject,
31
- expression: ts.CallExpression,
32
- ): ts.Expression {
33
- //----
34
- // VALIDATIONS
35
- //----
36
- // SIGNATURE DECLARATION
37
- const declaration: ts.Declaration | undefined =
38
- project.checker.getResolvedSignature(expression)?.declaration;
39
- if (!declaration) return expression;
40
-
41
- // FILE PATH
42
- const file: string = path.resolve(declaration.getSourceFile().fileName);
43
- if (file.indexOf(LIB_PATH) === -1 && file !== SRC_PATH)
44
- return expression;
45
-
46
- //----
47
- // TRANSFORMATION
48
- //----
49
- // FUNCTION NAME
50
- const { name } = project.checker.getTypeAtLocation(declaration).symbol;
51
-
52
- // FIND TRANSFORMER
53
- const functor: (() => Task) | undefined = FUNCTORS[name];
54
- if (functor === undefined) return expression;
55
-
56
- // RETURNS WITH TRANSFORMATION
57
- return functor()(project, expression.expression, expression);
58
- }
59
- }
60
-
61
- type Task = (
62
- project: IProject,
63
- modulo: ts.LeftHandSideExpression,
64
- expression: ts.CallExpression,
65
- ) => ts.Expression;
66
-
67
- const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
68
- const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
69
-
70
- const FUNCTORS: Record<string, () => Task> = {
71
- //----
72
- // SINGLE FUNCTIONS
73
- //----
74
- // BASIC VALIDATORS
75
- assert: () => AssertTransformer.transform(false),
76
- assertType: () => AssertTransformer.transform(false),
77
- is: () => IsTransformer.transform(false),
78
- validate: () => ValidateTransformer.transform(false),
79
-
80
- // STRICT VALIDATORS
81
- assertEquals: () => AssertTransformer.transform(true),
82
- equals: () => IsTransformer.transform(true),
83
- validateEquals: () => ValidateTransformer.transform(true),
84
-
85
- // PARSE FUNCTIONS
86
- isParse: () => IsParseTransformer.transform,
87
- assertParse: () => AssertParseTransformer.transform,
88
- validateParse: () => ValidateParseTransformer.transform,
89
-
90
- // STRINGIFY FUNCTIONS
91
- stringify: () => StringifyTransformer.transform,
92
- assertStringify: () => AssertStringifyTransformer.transform,
93
- isStringify: () => IsStringifyTransformer.transform,
94
- validateStringify: () => ValidateStringifyTransformer.transform,
95
-
96
- // MISC
97
- application: () => ApplicationTransformer.transform,
98
- metadata: () => MetadataTransformer.transform,
99
-
100
- //----
101
- // FACTORY FUNCTIONS
102
- //----
103
- // BASIC VALIDATORS
104
- createAssert: () => CreateAssertTransformer.transform(false),
105
- createAssertType: () => CreateAssertTransformer.transform(false),
106
- createIs: () => CreateIsTransformer.transform(false),
107
- createValidate: () => CreateValidateTransformer.transform(false),
108
-
109
- // STRICT VALIDATORS
110
- createAssertEquals: () => CreateAssertTransformer.transform(true),
111
- createEquals: () => CreateIsTransformer.transform(true),
112
- createValidateEquals: () => CreateValidateTransformer.transform(true),
113
-
114
- // PARSE FUNCTIONS
115
- createIsParse: () => CreateIsParseTransformer.transform,
116
- createAssertParse: () => CreateAssertParseTransformer.transform,
117
- createValidateParse: () => CreateValidateParseTransformer.transform,
118
-
119
- // STRINGIFY FUNCTIONS
120
- createStringify: () => CreateStringifyTransformer.transform,
121
- createAssertStringify: () => CreateAssertStringifyTransformer.transform,
122
- createIsStringify: () => CreateIsStringifyTransformer.transform,
123
- createValidateStringify: () => CreateValidateStringifyTransformer.transform,
124
- };
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 { MetadataTransformer } from "./features/miscellaneous/MetadataTransformer";
7
+ import { AssertParseTransformer } from "./features/parsers/AssertParseTransformer";
8
+ import { CreateAssertParseTransformer } from "./features/parsers/CreateAssertParseTransformer";
9
+ import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransformer";
10
+ import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
11
+ import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
12
+ import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
13
+ import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
14
+ import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
15
+ import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
16
+ import { CreateStringifyTransformer } from "./features/stringifiers/CreateStringifyTransformer";
17
+ import { CreateValidateStringifyTransformer } from "./features/stringifiers/CreateValidateStringifyProgrammer";
18
+ import { IsStringifyTransformer } from "./features/stringifiers/IsStringifyTransformer";
19
+ import { StringifyTransformer } from "./features/stringifiers/StringifyTransformer";
20
+ import { ValidateStringifyTransformer } from "./features/stringifiers/ValidateStringifyTransformer";
21
+ import { AssertTransformer } from "./features/validators/AssertTransformer";
22
+ import { CreateAssertTransformer } from "./features/validators/CreateAssertTransformer";
23
+ import { CreateIsTransformer } from "./features/validators/CreateIsTransformer";
24
+ import { CreateValidateTransformer } from "./features/validators/CreateValidateTransformer";
25
+ import { IsTransformer } from "./features/validators/IsTransformer";
26
+ import { ValidateTransformer } from "./features/validators/ValidateTransformer";
27
+
28
+ export namespace CallExpressionTransformer {
29
+ export function transform(
30
+ project: IProject,
31
+ expression: ts.CallExpression,
32
+ ): ts.Expression {
33
+ //----
34
+ // VALIDATIONS
35
+ //----
36
+ // SIGNATURE DECLARATION
37
+ const declaration: ts.Declaration | undefined =
38
+ project.checker.getResolvedSignature(expression)?.declaration;
39
+ if (!declaration) return expression;
40
+
41
+ // FILE PATH
42
+ const file: string = path.resolve(declaration.getSourceFile().fileName);
43
+ if (file.indexOf(LIB_PATH) === -1 && file !== SRC_PATH)
44
+ return expression;
45
+
46
+ //----
47
+ // TRANSFORMATION
48
+ //----
49
+ // FUNCTION NAME
50
+ const { name } = project.checker.getTypeAtLocation(declaration).symbol;
51
+
52
+ // FIND TRANSFORMER
53
+ const functor: (() => Task) | undefined = FUNCTORS[name];
54
+ if (functor === undefined) return expression;
55
+
56
+ // RETURNS WITH TRANSFORMATION
57
+ return functor()(project, expression.expression, expression);
58
+ }
59
+ }
60
+
61
+ type Task = (
62
+ project: IProject,
63
+ modulo: ts.LeftHandSideExpression,
64
+ expression: ts.CallExpression,
65
+ ) => ts.Expression;
66
+
67
+ const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
68
+ const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
69
+
70
+ const FUNCTORS: Record<string, () => Task> = {
71
+ //----
72
+ // SINGLE FUNCTIONS
73
+ //----
74
+ // BASIC VALIDATORS
75
+ assert: () => AssertTransformer.transform(false),
76
+ assertType: () => AssertTransformer.transform(false),
77
+ is: () => IsTransformer.transform(false),
78
+ validate: () => ValidateTransformer.transform(false),
79
+
80
+ // STRICT VALIDATORS
81
+ assertEquals: () => AssertTransformer.transform(true),
82
+ equals: () => IsTransformer.transform(true),
83
+ validateEquals: () => ValidateTransformer.transform(true),
84
+
85
+ // PARSE FUNCTIONS
86
+ isParse: () => IsParseTransformer.transform,
87
+ assertParse: () => AssertParseTransformer.transform,
88
+ validateParse: () => ValidateParseTransformer.transform,
89
+
90
+ // STRINGIFY FUNCTIONS
91
+ stringify: () => StringifyTransformer.transform,
92
+ assertStringify: () => AssertStringifyTransformer.transform,
93
+ isStringify: () => IsStringifyTransformer.transform,
94
+ validateStringify: () => ValidateStringifyTransformer.transform,
95
+
96
+ // MISC
97
+ application: () => ApplicationTransformer.transform,
98
+ metadata: () => MetadataTransformer.transform,
99
+
100
+ //----
101
+ // FACTORY FUNCTIONS
102
+ //----
103
+ // BASIC VALIDATORS
104
+ createAssert: () => CreateAssertTransformer.transform(false),
105
+ createAssertType: () => CreateAssertTransformer.transform(false),
106
+ createIs: () => CreateIsTransformer.transform(false),
107
+ createValidate: () => CreateValidateTransformer.transform(false),
108
+
109
+ // STRICT VALIDATORS
110
+ createAssertEquals: () => CreateAssertTransformer.transform(true),
111
+ createEquals: () => CreateIsTransformer.transform(true),
112
+ createValidateEquals: () => CreateValidateTransformer.transform(true),
113
+
114
+ // PARSE FUNCTIONS
115
+ createIsParse: () => CreateIsParseTransformer.transform,
116
+ createAssertParse: () => CreateAssertParseTransformer.transform,
117
+ createValidateParse: () => CreateValidateParseTransformer.transform,
118
+
119
+ // STRINGIFY FUNCTIONS
120
+ createStringify: () => CreateStringifyTransformer.transform,
121
+ createAssertStringify: () => CreateAssertStringifyTransformer.transform,
122
+ createIsStringify: () => CreateIsStringifyTransformer.transform,
123
+ createValidateStringify: () => CreateValidateStringifyTransformer.transform,
124
+ };
@@ -1,66 +1,66 @@
1
- // import path from "path";
2
- // import ts from "typescript";
3
- // import { AssertProgrammer } from "../programmers/AssertProgrammer";
4
- // import { IsProgrammer } from "../programmers/IsProgrammer";
5
- // import { StringifyProgrammer } from "../programmers/StringifyProgrammer";
6
- // import { IProject } from "../structures/IProject";
7
-
8
- // export namespace ExpressionWithArgumentTransformer {
9
- // export function transform(
10
- // project: IProject,
11
- // expression: ts.ExpressionWithTypeArguments,
12
- // ): ts.Expression {
13
- // //----
14
- // // VALIDATIONS
15
- // //----
16
- // // SYMBOL DECLARATION
17
- // const symbol: ts.Symbol | undefined =
18
- // project.checker.getSymbolAtLocation(expression.expression);
19
- // const declaration: ts.Declaration | undefined = symbol?.declarations
20
- // ? symbol.declarations[0]
21
- // : undefined;
22
- // if (!declaration) return expression;
23
-
24
- // // FILE PATH
25
- // const file: string = path.resolve(declaration.getSourceFile().fileName);
26
- // if (file !== LIB_PATH && file !== SRC_PATH) return expression;
27
-
28
- // // ARGUMENTS
29
- // if (expression.typeArguments?.length !== 1) return expression;
30
-
31
- // //----
32
- // // TRANSFORMATION
33
- // //----
34
- // // GET MODULO AND TYPE
35
- // const modulo: ts.LeftHandSideExpression = expression.expression;
36
- // const type: ts.Type = project.checker.getTypeFromTypeNode(
37
- // expression.typeArguments[0]!,
38
- // );
39
-
40
- // // FUNCTION NAME
41
- // const { name } = project.checker.getTypeAtLocation(declaration).symbol;
42
-
43
- // // FIND TRANSFORMER
44
- // const functor: (() => Task) | undefined = FUNCTORS[name];
45
- // if (functor === undefined) return expression;
46
-
47
- // // RETURNS WITH TRANSFORMATION
48
- // return functor()(project, modulo, type);
49
- // }
50
- // }
51
-
52
- // type Task = (
53
- // project: IProject,
54
- // modulo: ts.LeftHandSideExpression,
55
- // type: ts.Type,
56
- // ) => ts.ArrowFunction;
57
-
58
- // const LIB_PATH = path.resolve(path.join(__dirname, "..", "module.d.ts"));
59
- // const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
60
-
61
- // const FUNCTORS: Record<string, () => Task> = {
62
- // assert: () => AssertProgrammer.generate,
63
- // is: () => (project, _modulo, type) => IsProgrammer.generate(project, type),
64
- // stringify: () => (project, modulo, type) =>
65
- // StringifyProgrammer.generate(modulo)(project, type),
66
- // };
1
+ // import path from "path";
2
+ // import ts from "typescript";
3
+ // import { AssertProgrammer } from "../programmers/AssertProgrammer";
4
+ // import { IsProgrammer } from "../programmers/IsProgrammer";
5
+ // import { StringifyProgrammer } from "../programmers/StringifyProgrammer";
6
+ // import { IProject } from "../structures/IProject";
7
+
8
+ // export namespace ExpressionWithArgumentTransformer {
9
+ // export function transform(
10
+ // project: IProject,
11
+ // expression: ts.ExpressionWithTypeArguments,
12
+ // ): ts.Expression {
13
+ // //----
14
+ // // VALIDATIONS
15
+ // //----
16
+ // // SYMBOL DECLARATION
17
+ // const symbol: ts.Symbol | undefined =
18
+ // project.checker.getSymbolAtLocation(expression.expression);
19
+ // const declaration: ts.Declaration | undefined = symbol?.declarations
20
+ // ? symbol.declarations[0]
21
+ // : undefined;
22
+ // if (!declaration) return expression;
23
+
24
+ // // FILE PATH
25
+ // const file: string = path.resolve(declaration.getSourceFile().fileName);
26
+ // if (file !== LIB_PATH && file !== SRC_PATH) return expression;
27
+
28
+ // // ARGUMENTS
29
+ // if (expression.typeArguments?.length !== 1) return expression;
30
+
31
+ // //----
32
+ // // TRANSFORMATION
33
+ // //----
34
+ // // GET MODULO AND TYPE
35
+ // const modulo: ts.LeftHandSideExpression = expression.expression;
36
+ // const type: ts.Type = project.checker.getTypeFromTypeNode(
37
+ // expression.typeArguments[0]!,
38
+ // );
39
+
40
+ // // FUNCTION NAME
41
+ // const { name } = project.checker.getTypeAtLocation(declaration).symbol;
42
+
43
+ // // FIND TRANSFORMER
44
+ // const functor: (() => Task) | undefined = FUNCTORS[name];
45
+ // if (functor === undefined) return expression;
46
+
47
+ // // RETURNS WITH TRANSFORMATION
48
+ // return functor()(project, modulo, type);
49
+ // }
50
+ // }
51
+
52
+ // type Task = (
53
+ // project: IProject,
54
+ // modulo: ts.LeftHandSideExpression,
55
+ // type: ts.Type,
56
+ // ) => ts.ArrowFunction;
57
+
58
+ // const LIB_PATH = path.resolve(path.join(__dirname, "..", "module.d.ts"));
59
+ // const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
60
+
61
+ // const FUNCTORS: Record<string, () => Task> = {
62
+ // assert: () => AssertProgrammer.generate,
63
+ // is: () => (project, _modulo, type) => IsProgrammer.generate(project, type),
64
+ // stringify: () => (project, modulo, type) =>
65
+ // StringifyProgrammer.generate(modulo)(project, type),
66
+ // };