typia 4.2.3 → 4.3.0-dev.20230821

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 (260) hide show
  1. package/README.md +1 -1
  2. package/lib/factories/ExpressionFactory.d.ts +1 -0
  3. package/lib/factories/ExpressionFactory.js +3 -0
  4. package/lib/factories/ExpressionFactory.js.map +1 -1
  5. package/lib/factories/MetadataTagFactory.js +10 -4
  6. package/lib/factories/MetadataTagFactory.js.map +1 -1
  7. package/lib/metadata/IMetadataTag.d.ts +1 -1
  8. package/lib/metadata/MetadataTuple.js.map +1 -1
  9. package/lib/programmers/CheckerProgrammer.js +2 -2
  10. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  11. package/lib/programmers/LiteralsProgrammer.js +2 -1
  12. package/lib/programmers/LiteralsProgrammer.js.map +1 -1
  13. package/lib/programmers/RandomProgrammer.js +19 -10
  14. package/lib/programmers/RandomProgrammer.js.map +1 -1
  15. package/lib/programmers/helpers/RandomRanger.js +2 -2
  16. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  17. package/lib/programmers/helpers/UnionExplorer.js +11 -7
  18. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  19. package/lib/programmers/internal/application_number.js +10 -3
  20. package/lib/programmers/internal/application_number.js.map +1 -1
  21. package/lib/programmers/internal/check_bigint.js +16 -12
  22. package/lib/programmers/internal/check_bigint.js.map +1 -1
  23. package/lib/programmers/internal/check_number.js +38 -5
  24. package/lib/programmers/internal/check_number.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/CustomValidatorMap.ts +126 -126
  27. package/src/IRandomGenerator.ts +34 -34
  28. package/src/IValidation.ts +21 -21
  29. package/src/Primitive.ts +131 -131
  30. package/src/TypeGuardError.ts +36 -36
  31. package/src/executable/TypiaGenerateWizard.ts +85 -85
  32. package/src/executable/TypiaSetupWizard.ts +153 -153
  33. package/src/executable/setup/ArgumentParser.ts +45 -45
  34. package/src/executable/setup/CommandExecutor.ts +8 -8
  35. package/src/executable/setup/FileRetriever.ts +22 -22
  36. package/src/executable/setup/PackageManager.ts +71 -71
  37. package/src/executable/setup/PluginConfigurator.ts +70 -70
  38. package/src/executable/typia.ts +52 -52
  39. package/src/factories/CommentFactory.ts +84 -84
  40. package/src/factories/ExpressionFactory.ts +77 -70
  41. package/src/factories/IdentifierFactory.ts +59 -59
  42. package/src/factories/LiteralFactory.ts +39 -39
  43. package/src/factories/MetadataCollection.ts +269 -269
  44. package/src/factories/MetadataFactory.ts +34 -34
  45. package/src/factories/MetadataTagFactory.ts +361 -355
  46. package/src/factories/StatementFactory.ts +24 -24
  47. package/src/factories/TemplateFactory.ts +58 -58
  48. package/src/factories/TypeFactory.ts +124 -124
  49. package/src/factories/ValueFactory.ts +12 -12
  50. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  51. package/src/factories/internal/metadata/emend_metadata_atomics.ts +33 -33
  52. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  53. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  54. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  55. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  56. package/src/factories/internal/metadata/explore_metadata.ts +38 -38
  57. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  58. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  59. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  60. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  61. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  62. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  63. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  64. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +84 -84
  65. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  66. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  67. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  68. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  69. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  70. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  71. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  72. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  73. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  74. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  75. package/src/functional/$any.ts +2 -2
  76. package/src/functional/$dictionary.ts +25 -25
  77. package/src/functional/$every.ts +11 -11
  78. package/src/functional/$guard.ts +35 -35
  79. package/src/functional/$is_between.ts +2 -2
  80. package/src/functional/$is_custom.ts +14 -14
  81. package/src/functional/$is_date.ts +3 -3
  82. package/src/functional/$is_datetime.ts +2 -2
  83. package/src/functional/$is_email.ts +4 -4
  84. package/src/functional/$is_ipv4.ts +4 -4
  85. package/src/functional/$is_ipv6.ts +4 -4
  86. package/src/functional/$is_url.ts +4 -4
  87. package/src/functional/$is_uuid.ts +4 -4
  88. package/src/functional/$join.ts +46 -46
  89. package/src/functional/$number.ts +12 -12
  90. package/src/functional/$report.ts +15 -15
  91. package/src/functional/$rest.ts +3 -3
  92. package/src/functional/$string.ts +50 -50
  93. package/src/functional/$tail.ts +5 -5
  94. package/src/functional/Namespace.ts +127 -127
  95. package/src/index.ts +4 -4
  96. package/src/metadata/ICommentTag.ts +4 -4
  97. package/src/metadata/IJsDocTagInfo.ts +10 -10
  98. package/src/metadata/IMetadata.ts +28 -28
  99. package/src/metadata/IMetadataAlias.ts +14 -14
  100. package/src/metadata/IMetadataApplication.ts +7 -7
  101. package/src/metadata/IMetadataArray.ts +10 -10
  102. package/src/metadata/IMetadataCollection.ts +11 -11
  103. package/src/metadata/IMetadataConstant.ts +16 -16
  104. package/src/metadata/IMetadataDictionary.ts +14 -14
  105. package/src/metadata/IMetadataEntry.ts +6 -6
  106. package/src/metadata/IMetadataObject.ts +18 -18
  107. package/src/metadata/IMetadataProperty.ts +11 -11
  108. package/src/metadata/IMetadataResolved.ts +6 -6
  109. package/src/metadata/IMetadataTag.ts +112 -105
  110. package/src/metadata/IMetadataTuple.ts +10 -10
  111. package/src/metadata/Metadata.ts +607 -607
  112. package/src/metadata/MetadataAlias.ts +66 -66
  113. package/src/metadata/MetadataArray.ts +55 -55
  114. package/src/metadata/MetadataConstant.ts +3 -3
  115. package/src/metadata/MetadataObject.ts +129 -129
  116. package/src/metadata/MetadataProperty.ts +64 -64
  117. package/src/metadata/MetadataResolved.ts +51 -51
  118. package/src/metadata/MetadataTuple.ts +58 -53
  119. package/src/module.ts +2038 -2038
  120. package/src/programmers/ApplicationProgrammer.ts +47 -47
  121. package/src/programmers/AssertCloneProgrammer.ts +71 -71
  122. package/src/programmers/AssertParseProgrammer.ts +66 -66
  123. package/src/programmers/AssertProgrammer.ts +279 -279
  124. package/src/programmers/AssertPruneProgrammer.ts +68 -68
  125. package/src/programmers/AssertStringifyProgrammer.ts +66 -66
  126. package/src/programmers/CheckerProgrammer.ts +1173 -1173
  127. package/src/programmers/CloneProgrammer.ts +587 -587
  128. package/src/programmers/FeatureProgrammer.ts +495 -495
  129. package/src/programmers/IsCloneProgrammer.ts +78 -78
  130. package/src/programmers/IsParseProgrammer.ts +72 -72
  131. package/src/programmers/IsProgrammer.ts +239 -239
  132. package/src/programmers/IsPruneProgrammer.ts +73 -73
  133. package/src/programmers/IsStringifyProgrammer.ts +76 -76
  134. package/src/programmers/LiteralsProgrammer.ts +64 -63
  135. package/src/programmers/PruneProgrammer.ts +542 -542
  136. package/src/programmers/RandomProgrammer.ts +578 -579
  137. package/src/programmers/StringifyProgrammer.ts +986 -986
  138. package/src/programmers/TypiaProgrammer.ts +129 -129
  139. package/src/programmers/ValidateCloneProgrammer.ts +85 -85
  140. package/src/programmers/ValidateParseProgrammer.ts +70 -70
  141. package/src/programmers/ValidateProgrammer.ts +305 -305
  142. package/src/programmers/ValidatePruneProgrammer.ts +78 -78
  143. package/src/programmers/ValidateStringifyProgrammer.ts +84 -84
  144. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  145. package/src/programmers/helpers/CloneJoiner.ts +131 -131
  146. package/src/programmers/helpers/FunctionImporeter.ts +78 -78
  147. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  148. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  149. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  150. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  151. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  152. package/src/programmers/helpers/RandomRanger.ts +208 -216
  153. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  154. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  155. package/src/programmers/helpers/UnionExplorer.ts +305 -301
  156. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  157. package/src/programmers/helpers/disable_function_importer_declare.ts +26 -26
  158. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  159. package/src/programmers/internal/application_alias.ts +66 -66
  160. package/src/programmers/internal/application_array.ts +30 -30
  161. package/src/programmers/internal/application_boolean.ts +15 -15
  162. package/src/programmers/internal/application_constant.ts +26 -26
  163. package/src/programmers/internal/application_default.ts +17 -17
  164. package/src/programmers/internal/application_default_string.ts +33 -33
  165. package/src/programmers/internal/application_native.ts +39 -39
  166. package/src/programmers/internal/application_number.ts +80 -74
  167. package/src/programmers/internal/application_object.ts +165 -165
  168. package/src/programmers/internal/application_resolved.ts +55 -55
  169. package/src/programmers/internal/application_schema.ts +157 -157
  170. package/src/programmers/internal/application_string.ts +44 -44
  171. package/src/programmers/internal/application_templates.ts +25 -25
  172. package/src/programmers/internal/application_tuple.ts +57 -57
  173. package/src/programmers/internal/check_array.ts +30 -30
  174. package/src/programmers/internal/check_array_length.ts +35 -35
  175. package/src/programmers/internal/check_bigint.ts +113 -82
  176. package/src/programmers/internal/check_custom.ts +31 -31
  177. package/src/programmers/internal/check_dynamic_properties.ts +195 -195
  178. package/src/programmers/internal/check_everything.ts +28 -28
  179. package/src/programmers/internal/check_native.ts +21 -21
  180. package/src/programmers/internal/check_number.ts +258 -177
  181. package/src/programmers/internal/check_object.ts +55 -55
  182. package/src/programmers/internal/check_string.ts +25 -25
  183. package/src/programmers/internal/check_string_tags.ts +67 -67
  184. package/src/programmers/internal/check_template.ts +56 -56
  185. package/src/programmers/internal/check_union_array_like.ts +329 -329
  186. package/src/programmers/internal/decode_union_object.ts +73 -73
  187. package/src/programmers/internal/feature_object_entries.ts +63 -63
  188. package/src/programmers/internal/get_comment_tags.ts +23 -23
  189. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  190. package/src/programmers/internal/prune_object_properties.ts +60 -60
  191. package/src/programmers/internal/random_custom.ts +29 -29
  192. package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
  193. package/src/programmers/internal/stringify_native.ts +7 -7
  194. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  195. package/src/programmers/internal/template_to_pattern.ts +15 -15
  196. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  197. package/src/schemas/IJsonApplication.ts +8 -8
  198. package/src/schemas/IJsonComponents.ts +33 -33
  199. package/src/schemas/IJsonSchema.ts +133 -133
  200. package/src/transform.ts +27 -27
  201. package/src/transformers/CallExpressionTransformer.ts +179 -179
  202. package/src/transformers/FileTransformer.ts +47 -47
  203. package/src/transformers/IProject.ts +11 -11
  204. package/src/transformers/ITransformOptions.ts +62 -62
  205. package/src/transformers/ImportTransformer.ts +66 -66
  206. package/src/transformers/NodeTransformer.ts +13 -13
  207. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +112 -112
  208. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  209. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  210. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  211. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  212. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  213. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  214. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  215. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  216. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  217. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +39 -39
  218. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  219. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  220. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  221. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  222. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +28 -28
  223. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  224. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  225. package/src/transformers/features/miscellaneous/RandomTransformer.ts +42 -42
  226. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  227. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  228. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  229. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  230. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  231. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  232. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  233. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  234. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  235. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +12 -12
  236. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  237. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  238. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +12 -12
  239. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  240. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  241. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  242. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  243. package/src/transformers/features/validators/CreateAssertTransformer.ts +13 -13
  244. package/src/transformers/features/validators/CreateIsTransformer.ts +11 -11
  245. package/src/transformers/features/validators/CreateValidateTransformer.ts +13 -13
  246. package/src/transformers/features/validators/IsTransformer.ts +11 -11
  247. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  248. package/src/transformers/internal/GenericTransformer.ts +97 -97
  249. package/src/typings/Atomic.ts +17 -17
  250. package/src/typings/ClassProperties.ts +5 -5
  251. package/src/typings/Customizable.ts +5 -5
  252. package/src/typings/OmitNever.ts +3 -3
  253. package/src/typings/SpecialFields.ts +3 -3
  254. package/src/typings/Writable.ts +11 -11
  255. package/src/utils/ArrayUtil.ts +45 -45
  256. package/src/utils/Escaper.ts +46 -46
  257. package/src/utils/MapUtil.ts +12 -12
  258. package/src/utils/PatternUtil.ts +33 -33
  259. package/src/utils/RandomGenerator.ts +81 -81
  260. package/src/utils/Singleton.ts +17 -17
@@ -1,9 +1,9 @@
1
- import { IsStringifyProgrammer } from "../../../programmers/IsStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace IsStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("isStringify")(
7
- (project) => (modulo) => IsStringifyProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { IsStringifyProgrammer } from "../../../programmers/IsStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace IsStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("isStringify")(
7
+ (project) => (modulo) => IsStringifyProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace StringifyTransformer {
6
- export const transform = GenericTransformer.scalar("stringify")(
7
- (project) => (modulo) => StringifyProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace StringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("stringify")(
7
+ (project) => (modulo) => StringifyProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace ValidateStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("validatStringify")(
7
- (project) => (modulo) =>
8
- ValidateStringifyProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace ValidateStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("validatStringify")(
7
+ (project) => (modulo) =>
8
+ ValidateStringifyProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,11 +1,11 @@
1
- import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace AssertTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.scalar(equals ? "assertEquals" : "assert")(
8
- (project) => (modulo) =>
9
- AssertProgrammer.write(project)(modulo)(equals),
10
- );
11
- }
1
+ import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace AssertTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.scalar(equals ? "assertEquals" : "assert")(
8
+ (project) => (modulo) =>
9
+ AssertProgrammer.write(project)(modulo)(equals),
10
+ );
11
+ }
@@ -1,13 +1,13 @@
1
- import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateAssertTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.factory(
8
- equals ? "createAssertEquals" : "createAssert",
9
- )(
10
- (project) => (modulo) =>
11
- AssertProgrammer.write(project)(modulo)(equals),
12
- );
13
- }
1
+ import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateAssertTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.factory(
8
+ equals ? "createAssertEquals" : "createAssert",
9
+ )(
10
+ (project) => (modulo) =>
11
+ AssertProgrammer.write(project)(modulo)(equals),
12
+ );
13
+ }
@@ -1,11 +1,11 @@
1
- import { IsProgrammer } from "../../../programmers/IsProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateIsTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.factory(equals ? "createEquals" : "createIs")(
8
- (project) => (modulo) =>
9
- IsProgrammer.write(project)(modulo)(equals),
10
- );
11
- }
1
+ import { IsProgrammer } from "../../../programmers/IsProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateIsTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.factory(equals ? "createEquals" : "createIs")(
8
+ (project) => (modulo) =>
9
+ IsProgrammer.write(project)(modulo)(equals),
10
+ );
11
+ }
@@ -1,13 +1,13 @@
1
- import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateValidateTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.factory(
8
- equals ? "createValidateEquals" : "createValidate",
9
- )(
10
- (project) => (modulo) =>
11
- ValidateProgrammer.write(project)(modulo)(equals),
12
- );
13
- }
1
+ import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateValidateTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.factory(
8
+ equals ? "createValidateEquals" : "createValidate",
9
+ )(
10
+ (project) => (modulo) =>
11
+ ValidateProgrammer.write(project)(modulo)(equals),
12
+ );
13
+ }
@@ -1,11 +1,11 @@
1
- import { IsProgrammer } from "../../../programmers/IsProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace IsTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.scalar(equals ? "equals" : "is")(
8
- (project) => (modulo) =>
9
- IsProgrammer.write(project)(modulo)(equals),
10
- );
11
- }
1
+ import { IsProgrammer } from "../../../programmers/IsProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace IsTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.scalar(equals ? "equals" : "is")(
8
+ (project) => (modulo) =>
9
+ IsProgrammer.write(project)(modulo)(equals),
10
+ );
11
+ }
@@ -1,11 +1,11 @@
1
- import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace ValidateTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.scalar(equals ? "validateEquals" : "validate")(
8
- (project) => (modulo) =>
9
- ValidateProgrammer.write(project)(modulo)(equals),
10
- );
11
- }
1
+ import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace ValidateTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.scalar(equals ? "validateEquals" : "validate")(
8
+ (project) => (modulo) =>
9
+ ValidateProgrammer.write(project)(modulo)(equals),
10
+ );
11
+ }
@@ -1,97 +1,97 @@
1
- import ts from "typescript";
2
-
3
- import { IProject } from "../IProject";
4
-
5
- export namespace GenericTransformer {
6
- export const scalar =
7
- (method: string) =>
8
- (
9
- programmer: (
10
- project: IProject,
11
- ) => (
12
- modulo: ts.LeftHandSideExpression,
13
- ) => (type: ts.Type, name: string) => ts.ArrowFunction,
14
- ) =>
15
- (project: IProject) =>
16
- (modulo: ts.LeftHandSideExpression) =>
17
- (expression: ts.CallExpression) => {
18
- // CHECK PARAMETER
19
- if (expression.arguments.length !== 1)
20
- throw new Error(`Error on typia.${method}(): no input value.`);
21
-
22
- // GET TYPE INFO
23
- const [type, node, generic]: [ts.Type, ts.Node, boolean] =
24
- expression.typeArguments && expression.typeArguments[0]
25
- ? [
26
- project.checker.getTypeFromTypeNode(
27
- expression.typeArguments[0],
28
- ),
29
- expression.typeArguments[0],
30
- true,
31
- ]
32
- : [
33
- project.checker.getTypeAtLocation(
34
- expression.arguments[0]!,
35
- ),
36
- expression.arguments[0]!,
37
- false,
38
- ];
39
- if (type.isTypeParameter())
40
- throw new Error(
41
- `Error on typia.${method}(): non-specified generic argument.`,
42
- );
43
-
44
- // DO TRANSFORM
45
- return ts.factory.createCallExpression(
46
- programmer(project)(modulo)(
47
- type,
48
- generic
49
- ? node.getFullText().trim()
50
- : name(project.checker)(type)(node),
51
- ),
52
- undefined,
53
- [expression.arguments[0]!],
54
- );
55
- };
56
-
57
- export const factory =
58
- (method: string) =>
59
- (
60
- programmer: (
61
- project: IProject,
62
- ) => (
63
- modulo: ts.LeftHandSideExpression,
64
- ) => (type: ts.Type, name: string) => ts.ArrowFunction,
65
- ) =>
66
- (project: IProject) =>
67
- (modulo: ts.LeftHandSideExpression) =>
68
- (expression: ts.CallExpression) => {
69
- // CHECK GENERIC ARGUMENT EXISTENCE
70
- if (!expression.typeArguments?.[0])
71
- throw new Error(
72
- `Error on typia.${method}(): generic argument is not specified.`,
73
- );
74
-
75
- // GET TYPE INFO
76
- const node: ts.TypeNode = expression.typeArguments[0];
77
- const type: ts.Type = project.checker.getTypeFromTypeNode(node);
78
-
79
- if (type.isTypeParameter())
80
- throw new Error(
81
- `Error on typia.${method}(): non-specified generic argument.`,
82
- );
83
-
84
- // DO TRANSFORM
85
- return programmer(project)(modulo)(type, node.getFullText().trim());
86
- };
87
-
88
- const name =
89
- (checker: ts.TypeChecker) =>
90
- (type: ts.Type) =>
91
- (node: ts.Node): string =>
92
- checker.typeToString(
93
- type,
94
- node,
95
- ts.TypeFormatFlags.NodeBuilderFlagsMask,
96
- );
97
- }
1
+ import ts from "typescript";
2
+
3
+ import { IProject } from "../IProject";
4
+
5
+ export namespace GenericTransformer {
6
+ export const scalar =
7
+ (method: string) =>
8
+ (
9
+ programmer: (
10
+ project: IProject,
11
+ ) => (
12
+ modulo: ts.LeftHandSideExpression,
13
+ ) => (type: ts.Type, name: string) => ts.ArrowFunction,
14
+ ) =>
15
+ (project: IProject) =>
16
+ (modulo: ts.LeftHandSideExpression) =>
17
+ (expression: ts.CallExpression) => {
18
+ // CHECK PARAMETER
19
+ if (expression.arguments.length !== 1)
20
+ throw new Error(`Error on typia.${method}(): no input value.`);
21
+
22
+ // GET TYPE INFO
23
+ const [type, node, generic]: [ts.Type, ts.Node, boolean] =
24
+ expression.typeArguments && expression.typeArguments[0]
25
+ ? [
26
+ project.checker.getTypeFromTypeNode(
27
+ expression.typeArguments[0],
28
+ ),
29
+ expression.typeArguments[0],
30
+ true,
31
+ ]
32
+ : [
33
+ project.checker.getTypeAtLocation(
34
+ expression.arguments[0]!,
35
+ ),
36
+ expression.arguments[0]!,
37
+ false,
38
+ ];
39
+ if (type.isTypeParameter())
40
+ throw new Error(
41
+ `Error on typia.${method}(): non-specified generic argument.`,
42
+ );
43
+
44
+ // DO TRANSFORM
45
+ return ts.factory.createCallExpression(
46
+ programmer(project)(modulo)(
47
+ type,
48
+ generic
49
+ ? node.getFullText().trim()
50
+ : name(project.checker)(type)(node),
51
+ ),
52
+ undefined,
53
+ [expression.arguments[0]!],
54
+ );
55
+ };
56
+
57
+ export const factory =
58
+ (method: string) =>
59
+ (
60
+ programmer: (
61
+ project: IProject,
62
+ ) => (
63
+ modulo: ts.LeftHandSideExpression,
64
+ ) => (type: ts.Type, name: string) => ts.ArrowFunction,
65
+ ) =>
66
+ (project: IProject) =>
67
+ (modulo: ts.LeftHandSideExpression) =>
68
+ (expression: ts.CallExpression) => {
69
+ // CHECK GENERIC ARGUMENT EXISTENCE
70
+ if (!expression.typeArguments?.[0])
71
+ throw new Error(
72
+ `Error on typia.${method}(): generic argument is not specified.`,
73
+ );
74
+
75
+ // GET TYPE INFO
76
+ const node: ts.TypeNode = expression.typeArguments[0];
77
+ const type: ts.Type = project.checker.getTypeFromTypeNode(node);
78
+
79
+ if (type.isTypeParameter())
80
+ throw new Error(
81
+ `Error on typia.${method}(): non-specified generic argument.`,
82
+ );
83
+
84
+ // DO TRANSFORM
85
+ return programmer(project)(modulo)(type, node.getFullText().trim());
86
+ };
87
+
88
+ const name =
89
+ (checker: ts.TypeChecker) =>
90
+ (type: ts.Type) =>
91
+ (node: ts.Node): string =>
92
+ checker.typeToString(
93
+ type,
94
+ node,
95
+ ts.TypeFormatFlags.NodeBuilderFlagsMask,
96
+ );
97
+ }
@@ -1,17 +1,17 @@
1
- export namespace Atomic {
2
- export type Type = boolean | number | string | bigint;
3
- export type Literal =
4
- | "boolean"
5
- | "integer"
6
- | "number"
7
- | "string"
8
- | "bigint";
9
-
10
- export type Mapper = {
11
- boolean: boolean;
12
- integer: number;
13
- number: number;
14
- string: string;
15
- bigint: bigint;
16
- };
17
- }
1
+ export namespace Atomic {
2
+ export type Type = boolean | number | string | bigint;
3
+ export type Literal =
4
+ | "boolean"
5
+ | "integer"
6
+ | "number"
7
+ | "string"
8
+ | "bigint";
9
+
10
+ export type Mapper = {
11
+ boolean: boolean;
12
+ integer: number;
13
+ number: number;
14
+ string: string;
15
+ bigint: bigint;
16
+ };
17
+ }
@@ -1,5 +1,5 @@
1
- import { OmitNever } from "./OmitNever";
2
-
3
- export type ClassProperties<T extends object> = OmitNever<{
4
- [K in keyof T]: T[K] extends Function ? never : T[K];
5
- }>;
1
+ import { OmitNever } from "./OmitNever";
2
+
3
+ export type ClassProperties<T extends object> = OmitNever<{
4
+ [K in keyof T]: T[K] extends Function ? never : T[K];
5
+ }>;
@@ -1,5 +1,5 @@
1
- export type Customizable = {
2
- number: number;
3
- string: string;
4
- bigint: bigint;
5
- };
1
+ export type Customizable = {
2
+ number: number;
3
+ string: string;
4
+ bigint: bigint;
5
+ };
@@ -1,3 +1,3 @@
1
- import { SpecialFields } from "./SpecialFields";
2
-
3
- export type OmitNever<T extends object> = Omit<T, SpecialFields<T, never>>;
1
+ import { SpecialFields } from "./SpecialFields";
2
+
3
+ export type OmitNever<T extends object> = Omit<T, SpecialFields<T, never>>;
@@ -1,3 +1,3 @@
1
- export type SpecialFields<Instance extends object, Target> = {
2
- [P in keyof Instance]: Instance[P] extends Target ? P : never;
3
- }[keyof Instance & string];
1
+ export type SpecialFields<Instance extends object, Target> = {
2
+ [P in keyof Instance]: Instance[P] extends Target ? P : never;
3
+ }[keyof Instance & string];
@@ -1,11 +1,11 @@
1
- import { ClassProperties } from "./ClassProperties";
2
-
3
- export type Writable<T extends object> = {
4
- -readonly [P in keyof T]: T[P];
5
- };
6
-
7
- export function Writable<T extends object>(
8
- elem: T,
9
- ): Writable<ClassProperties<T>> {
10
- return elem as any;
11
- }
1
+ import { ClassProperties } from "./ClassProperties";
2
+
3
+ export type Writable<T extends object> = {
4
+ -readonly [P in keyof T]: T[P];
5
+ };
6
+
7
+ export function Writable<T extends object>(
8
+ elem: T,
9
+ ): Writable<ClassProperties<T>> {
10
+ return elem as any;
11
+ }
@@ -1,45 +1,45 @@
1
- export namespace ArrayUtil {
2
- export const has = <T>(array: T[], pred: (elem: T) => boolean): boolean =>
3
- array.some(pred);
4
-
5
- export const add = <T>(
6
- array: T[],
7
- value: T,
8
- pred: (x: T, y: T) => boolean = (x, y) => x === y,
9
- ): boolean => {
10
- if (array.some((elem) => pred(elem, value))) return false;
11
- array.push(value);
12
- return true;
13
- };
14
-
15
- export const set = <Key, T>(
16
- array: T[],
17
- value: T,
18
- key: (elem: T) => Key,
19
- ): void => {
20
- if (array.some((elem) => key(elem) === key(value))) return;
21
- array.push(value);
22
- };
23
-
24
- export const take = <T>(
25
- array: T[],
26
- pred: (elem: T) => boolean,
27
- init: () => T,
28
- ): T => {
29
- const index: number = array.findIndex(pred);
30
- if (index !== -1) return array[index]!;
31
-
32
- const elem: T = init();
33
- array.push(elem);
34
- return elem;
35
- };
36
-
37
- export const repeat = <T>(
38
- count: number,
39
- closure: (index: number, count: number) => T,
40
- ): T[] =>
41
- new Array(count).fill("").map((_, index) => closure(index, count));
42
-
43
- export const flat = <T>(matrix: T[][]): T[] =>
44
- ([] as T[]).concat(...matrix);
45
- }
1
+ export namespace ArrayUtil {
2
+ export const has = <T>(array: T[], pred: (elem: T) => boolean): boolean =>
3
+ array.some(pred);
4
+
5
+ export const add = <T>(
6
+ array: T[],
7
+ value: T,
8
+ pred: (x: T, y: T) => boolean = (x, y) => x === y,
9
+ ): boolean => {
10
+ if (array.some((elem) => pred(elem, value))) return false;
11
+ array.push(value);
12
+ return true;
13
+ };
14
+
15
+ export const set = <Key, T>(
16
+ array: T[],
17
+ value: T,
18
+ key: (elem: T) => Key,
19
+ ): void => {
20
+ if (array.some((elem) => key(elem) === key(value))) return;
21
+ array.push(value);
22
+ };
23
+
24
+ export const take = <T>(
25
+ array: T[],
26
+ pred: (elem: T) => boolean,
27
+ init: () => T,
28
+ ): T => {
29
+ const index: number = array.findIndex(pred);
30
+ if (index !== -1) return array[index]!;
31
+
32
+ const elem: T = init();
33
+ array.push(elem);
34
+ return elem;
35
+ };
36
+
37
+ export const repeat = <T>(
38
+ count: number,
39
+ closure: (index: number, count: number) => T,
40
+ ): T[] =>
41
+ new Array(count).fill("").map((_, index) => closure(index, count));
42
+
43
+ export const flat = <T>(matrix: T[][]): T[] =>
44
+ ([] as T[]).concat(...matrix);
45
+ }