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,12 +1,12 @@
1
- import { TypeGuardError } from "../TypeGuardError";
2
-
3
- export const $number = (value: number): number => {
4
- if (isFinite(value) === false)
5
- throw new TypeGuardError({
6
- method: "typia.stringify",
7
- expected: "number",
8
- value,
9
- message: "Error on typia.stringify(): infinite or not a number.",
10
- });
11
- return value;
12
- };
1
+ import { TypeGuardError } from "../TypeGuardError";
2
+
3
+ export const $number = (value: number): number => {
4
+ if (isFinite(value) === false)
5
+ throw new TypeGuardError({
6
+ method: "typia.stringify",
7
+ expected: "number",
8
+ value,
9
+ message: "Error on typia.stringify(): infinite or not a number.",
10
+ });
11
+ return value;
12
+ };
@@ -1,15 +1,15 @@
1
- import { IValidation } from "../IValidation";
2
-
3
- export const $report = (array: IValidation.IError[]) => {
4
- const reportable = (path: string): boolean => {
5
- if (array.length === 0) return true;
6
- const last: string = array[array.length - 1]!.path;
7
- return (
8
- path.length > last.length || last.substring(0, path.length) !== path
9
- );
10
- };
11
- return (exceptable: boolean, error: IValidation.IError): false => {
12
- if (exceptable && reportable(error.path)) array.push(error);
13
- return false;
14
- };
15
- };
1
+ import { IValidation } from "../IValidation";
2
+
3
+ export const $report = (array: IValidation.IError[]) => {
4
+ const reportable = (path: string): boolean => {
5
+ if (array.length === 0) return true;
6
+ const last: string = array[array.length - 1]!.path;
7
+ return (
8
+ path.length > last.length || last.substring(0, path.length) !== path
9
+ );
10
+ };
11
+ return (exceptable: boolean, error: IValidation.IError): false => {
12
+ if (exceptable && reportable(error.path)) array.push(error);
13
+ return false;
14
+ };
15
+ };
@@ -1,3 +1,3 @@
1
- export const $rest = (str: string): string => {
2
- return str.length === 2 ? "" : "," + str.substring(1, str.length - 1);
3
- };
1
+ export const $rest = (str: string): string => {
2
+ return str.length === 2 ? "" : "," + str.substring(1, str.length - 1);
3
+ };
@@ -1,37 +1,37 @@
1
- /**
2
- * @internal
3
- */
4
- export const $string = (str: string): string => {
5
- if (str.length > 41) return JSON.stringify(str);
6
-
7
- const length = str.length;
8
- let result = "";
9
- let last = 0;
10
- let found = false;
11
- let surrogateFound = false;
12
- let point = 255;
13
-
14
- // eslint-disable-next-line
15
- for (let i = 0; i < length && point >= 32; i++) {
16
- point = str.charCodeAt(i);
17
- if (0xd800 <= point && point <= 0xdfff) {
18
- // The current character is a surrogate.
19
- surrogateFound = true;
20
- break;
21
- }
22
- if (point === 34 || point === 92) {
23
- result += str.slice(last, i) + "\\";
24
- last = i;
25
- found = true;
26
- }
27
- }
28
-
29
- if (!found) {
30
- result = str;
31
- } else {
32
- result += str.slice(last);
33
- }
34
- return point < 32 || surrogateFound === true
35
- ? JSON.stringify(str)
36
- : `"${result}"`;
37
- };
1
+ /**
2
+ * @internal
3
+ */
4
+ export const $string = (str: string): string => {
5
+ if (str.length > 41) return JSON.stringify(str);
6
+
7
+ const length = str.length;
8
+ let result = "";
9
+ let last = 0;
10
+ let found = false;
11
+ let surrogateFound = false;
12
+ let point = 255;
13
+
14
+ // eslint-disable-next-line
15
+ for (let i = 0; i < length && point >= 32; i++) {
16
+ point = str.charCodeAt(i);
17
+ if (0xd800 <= point && point <= 0xdfff) {
18
+ // The current character is a surrogate.
19
+ surrogateFound = true;
20
+ break;
21
+ }
22
+ if (point === 34 || point === 92) {
23
+ result += str.slice(last, i) + "\\";
24
+ last = i;
25
+ found = true;
26
+ }
27
+ }
28
+
29
+ if (!found) {
30
+ result = str;
31
+ } else {
32
+ result += str.slice(last);
33
+ }
34
+ return point < 32 || surrogateFound === true
35
+ ? JSON.stringify(str)
36
+ : `"${result}"`;
37
+ };
@@ -1,5 +1,5 @@
1
- /**
2
- * @internal
3
- */
4
- export const $tail = (str: string): string =>
5
- str[str.length - 1] === "," ? str.substring(0, str.length - 1) : str;
1
+ /**
2
+ * @internal
3
+ */
4
+ export const $tail = (str: string): string =>
5
+ str[str.length - 1] === "," ? str.substring(0, str.length - 1) : str;
@@ -1,127 +1,127 @@
1
- import { RandomGenerator } from "../utils/RandomGenerator";
2
-
3
- import { IValidation } from "../IValidation";
4
- import { TypeGuardError } from "../TypeGuardError";
5
- import { $any } from "./$any";
6
- import { $every } from "./$every";
7
- import { $guard } from "./$guard";
8
- import { $is_between } from "./$is_between";
9
- import { $is_custom } from "./$is_custom";
10
- import { $is_date } from "./$is_date";
11
- import { $is_datetime } from "./$is_datetime";
12
- import { $is_email } from "./$is_email";
13
- import { $is_ipv4 } from "./$is_ipv4";
14
- import { $is_ipv6 } from "./$is_ipv6";
15
- import { $is_url } from "./$is_url";
16
- import { $is_uuid } from "./$is_uuid";
17
- import { $join } from "./$join";
18
- import { $number } from "./$number";
19
- import { $report } from "./$report";
20
- import { $rest } from "./$rest";
21
- import { $string } from "./$string";
22
- import { $tail } from "./$tail";
23
-
24
- /**
25
- * @internal
26
- */
27
- export namespace Namespace {
28
- export const is = () => ({
29
- is_uuid: $is_uuid,
30
- is_email: $is_email,
31
- is_url: $is_url,
32
- is_ipv4: $is_ipv4,
33
- is_ipv6: $is_ipv6,
34
- is_between: $is_between,
35
- is_date: $is_date,
36
- is_datetime: $is_datetime,
37
- is_custom: $is_custom,
38
- });
39
-
40
- export const assert = (method: string) => ({
41
- ...is(),
42
- join: $join,
43
- every: $every,
44
- guard: $guard(`typia.${method}`),
45
- predicate: (
46
- matched: boolean,
47
- exceptionable: boolean,
48
- closure: () => Omit<TypeGuardError.IProps, "method">,
49
- ): boolean => {
50
- if (matched === false && exceptionable === true)
51
- throw new TypeGuardError({
52
- ...closure(),
53
- method: `typia.${method}`,
54
- });
55
- return matched;
56
- },
57
- });
58
-
59
- export const validate = () => ({
60
- ...is(),
61
- join: $join,
62
- report: $report,
63
- predicate:
64
- (res: IValidation) =>
65
- (
66
- matched: boolean,
67
- exceptionable: boolean,
68
- closure: () => IValidation.IError,
69
- ) => {
70
- // CHECK FAILURE
71
- if (matched === false && exceptionable === true)
72
- (() => {
73
- res.success &&= false;
74
- const errorList = (res as IValidation.IFailure).errors;
75
-
76
- // TRACE ERROR
77
- const error = closure();
78
- if (errorList.length) {
79
- const last = errorList[errorList.length - 1]!.path;
80
- if (
81
- last.length >= error.path.length &&
82
- last.substring(0, error.path.length) ===
83
- error.path
84
- )
85
- return;
86
- }
87
- errorList.push(error);
88
- return;
89
- })();
90
- return matched;
91
- },
92
- });
93
-
94
- export const stringify = (method: string) => ({
95
- ...is(),
96
- number: $number,
97
- string: $string,
98
- tail: $tail,
99
- rest: $rest,
100
- throws: $throws(method),
101
- });
102
-
103
- export const clone = (method: string) => ({
104
- ...is(),
105
- throws: $throws(method),
106
- any: $any,
107
- });
108
-
109
- export const prune = (method: string) => ({
110
- ...is(),
111
- throws: $throws(method),
112
- });
113
-
114
- export const random = () => ({
115
- generator: RandomGenerator,
116
- pick: RandomGenerator.pick,
117
- });
118
-
119
- const $throws =
120
- (method: string) =>
121
- (props: Pick<TypeGuardError.IProps, "expected" | "value">) => {
122
- throw new TypeGuardError({
123
- ...props,
124
- method: `typia.${method}`,
125
- });
126
- };
127
- }
1
+ import { RandomGenerator } from "../utils/RandomGenerator";
2
+
3
+ import { IValidation } from "../IValidation";
4
+ import { TypeGuardError } from "../TypeGuardError";
5
+ import { $any } from "./$any";
6
+ import { $every } from "./$every";
7
+ import { $guard } from "./$guard";
8
+ import { $is_between } from "./$is_between";
9
+ import { $is_custom } from "./$is_custom";
10
+ import { $is_date } from "./$is_date";
11
+ import { $is_datetime } from "./$is_datetime";
12
+ import { $is_email } from "./$is_email";
13
+ import { $is_ipv4 } from "./$is_ipv4";
14
+ import { $is_ipv6 } from "./$is_ipv6";
15
+ import { $is_url } from "./$is_url";
16
+ import { $is_uuid } from "./$is_uuid";
17
+ import { $join } from "./$join";
18
+ import { $number } from "./$number";
19
+ import { $report } from "./$report";
20
+ import { $rest } from "./$rest";
21
+ import { $string } from "./$string";
22
+ import { $tail } from "./$tail";
23
+
24
+ /**
25
+ * @internal
26
+ */
27
+ export namespace Namespace {
28
+ export const is = () => ({
29
+ is_uuid: $is_uuid,
30
+ is_email: $is_email,
31
+ is_url: $is_url,
32
+ is_ipv4: $is_ipv4,
33
+ is_ipv6: $is_ipv6,
34
+ is_between: $is_between,
35
+ is_date: $is_date,
36
+ is_datetime: $is_datetime,
37
+ is_custom: $is_custom,
38
+ });
39
+
40
+ export const assert = (method: string) => ({
41
+ ...is(),
42
+ join: $join,
43
+ every: $every,
44
+ guard: $guard(`typia.${method}`),
45
+ predicate: (
46
+ matched: boolean,
47
+ exceptionable: boolean,
48
+ closure: () => Omit<TypeGuardError.IProps, "method">,
49
+ ): boolean => {
50
+ if (matched === false && exceptionable === true)
51
+ throw new TypeGuardError({
52
+ ...closure(),
53
+ method: `typia.${method}`,
54
+ });
55
+ return matched;
56
+ },
57
+ });
58
+
59
+ export const validate = () => ({
60
+ ...is(),
61
+ join: $join,
62
+ report: $report,
63
+ predicate:
64
+ (res: IValidation) =>
65
+ (
66
+ matched: boolean,
67
+ exceptionable: boolean,
68
+ closure: () => IValidation.IError,
69
+ ) => {
70
+ // CHECK FAILURE
71
+ if (matched === false && exceptionable === true)
72
+ (() => {
73
+ res.success &&= false;
74
+ const errorList = (res as IValidation.IFailure).errors;
75
+
76
+ // TRACE ERROR
77
+ const error = closure();
78
+ if (errorList.length) {
79
+ const last = errorList[errorList.length - 1]!.path;
80
+ if (
81
+ last.length >= error.path.length &&
82
+ last.substring(0, error.path.length) ===
83
+ error.path
84
+ )
85
+ return;
86
+ }
87
+ errorList.push(error);
88
+ return;
89
+ })();
90
+ return matched;
91
+ },
92
+ });
93
+
94
+ export const stringify = (method: string) => ({
95
+ ...is(),
96
+ number: $number,
97
+ string: $string,
98
+ tail: $tail,
99
+ rest: $rest,
100
+ throws: $throws(method),
101
+ });
102
+
103
+ export const clone = (method: string) => ({
104
+ ...is(),
105
+ throws: $throws(method),
106
+ any: $any,
107
+ });
108
+
109
+ export const prune = (method: string) => ({
110
+ ...is(),
111
+ throws: $throws(method),
112
+ });
113
+
114
+ export const random = () => ({
115
+ generator: RandomGenerator,
116
+ pick: RandomGenerator.pick,
117
+ });
118
+
119
+ const $throws =
120
+ (method: string) =>
121
+ (props: Pick<TypeGuardError.IProps, "expected" | "value">) => {
122
+ throw new TypeGuardError({
123
+ ...props,
124
+ method: `typia.${method}`,
125
+ });
126
+ };
127
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as typia from "./module";
2
-
3
- export default typia;
4
- export * from "./module";
1
+ import * as typia from "./module";
2
+
3
+ export default typia;
4
+ export * from "./module";
@@ -1,4 +1,4 @@
1
- export interface ICommentTag {
2
- name: string;
3
- value?: string;
4
- }
1
+ export interface ICommentTag {
2
+ name: string;
3
+ value?: string;
4
+ }
@@ -1,10 +1,10 @@
1
- export interface IJsDocTagInfo {
2
- name: string;
3
- text?: IJsDocTagInfo.IText[];
4
- }
5
- export namespace IJsDocTagInfo {
6
- export interface IText {
7
- text: string;
8
- kind: string;
9
- }
10
- }
1
+ export interface IJsDocTagInfo {
2
+ name: string;
3
+ text?: IJsDocTagInfo.IText[];
4
+ }
5
+ export namespace IJsDocTagInfo {
6
+ export interface IText {
7
+ text: string;
8
+ kind: string;
9
+ }
10
+ }
@@ -1,26 +1,26 @@
1
- import { Atomic } from "../typings/Atomic";
2
-
3
- import { IMetadataConstant } from "./IMetadataConstant";
4
- import { IMetadataEntry } from "./IMetadataEntry";
5
-
6
- export interface IMetadata {
7
- any: boolean;
8
- required: boolean;
9
- optional: boolean;
10
- nullable: boolean;
11
- functional: boolean;
12
-
13
- atomics: Atomic.Literal[];
14
- constants: IMetadataConstant[];
15
- templates: IMetadata[][];
16
- resolved: IMetadata | null;
17
-
18
- rest: IMetadata | null;
19
- arrays: IMetadata[];
20
- tuples: IMetadata[][];
21
- objects: string[];
22
-
23
- natives: string[];
24
- sets: IMetadata[];
25
- maps: IMetadataEntry[];
26
- }
1
+ import { Atomic } from "../typings/Atomic";
2
+
3
+ import { IMetadataConstant } from "./IMetadataConstant";
4
+ import { IMetadataEntry } from "./IMetadataEntry";
5
+
6
+ export interface IMetadata {
7
+ any: boolean;
8
+ required: boolean;
9
+ optional: boolean;
10
+ nullable: boolean;
11
+ functional: boolean;
12
+
13
+ atomics: Atomic.Literal[];
14
+ constants: IMetadataConstant[];
15
+ templates: IMetadata[][];
16
+ resolved: IMetadata | null;
17
+
18
+ rest: IMetadata | null;
19
+ arrays: IMetadata[];
20
+ tuples: IMetadata[][];
21
+ objects: string[];
22
+
23
+ natives: string[];
24
+ sets: IMetadata[];
25
+ maps: IMetadataEntry[];
26
+ }
@@ -1,7 +1,7 @@
1
- import { IMetadata } from "./IMetadata";
2
- import { IMetadataObject } from "./IMetadataObject";
3
-
4
- export interface IMetadataApplication {
5
- metadatas: IMetadata[];
6
- collection: IMetadataObject[];
7
- }
1
+ import { IMetadata } from "./IMetadata";
2
+ import { IMetadataObject } from "./IMetadataObject";
3
+
4
+ export interface IMetadataApplication {
5
+ metadatas: IMetadata[];
6
+ collection: IMetadataObject[];
7
+ }
@@ -1,16 +1,16 @@
1
- import { Atomic } from "../typings/Atomic";
2
-
3
- export type IMetadataConstant =
4
- | IMetadataConstant.IBase<"boolean", boolean>
5
- | IMetadataConstant.IBase<"number", number>
6
- | IMetadataConstant.IBase<"string", string>
7
- | IMetadataConstant.IBase<"bigint", bigint>;
8
- export namespace IMetadataConstant {
9
- export interface IBase<
10
- Type extends Atomic.Literal,
11
- Value extends Atomic.Type,
12
- > {
13
- type: Type;
14
- values: Value[];
15
- }
16
- }
1
+ import { Atomic } from "../typings/Atomic";
2
+
3
+ export type IMetadataConstant =
4
+ | IMetadataConstant.IBase<"boolean", boolean>
5
+ | IMetadataConstant.IBase<"number", number>
6
+ | IMetadataConstant.IBase<"string", string>
7
+ | IMetadataConstant.IBase<"bigint", bigint>;
8
+ export namespace IMetadataConstant {
9
+ export interface IBase<
10
+ Type extends Atomic.Literal,
11
+ Value extends Atomic.Type,
12
+ > {
13
+ type: Type;
14
+ values: Value[];
15
+ }
16
+ }
@@ -1,6 +1,6 @@
1
- import { IMetadata } from "./IMetadata";
2
-
3
- export interface IMetadataEntry {
4
- key: IMetadata;
5
- value: IMetadata;
6
- }
1
+ import { IMetadata } from "./IMetadata";
2
+
3
+ export interface IMetadataEntry {
4
+ key: IMetadata;
5
+ value: IMetadata;
6
+ }
@@ -1,29 +1,29 @@
1
- import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
- import { IMetadataProperty } from "./IMetadataProperty";
3
-
4
- export interface IMetadataObject {
5
- name: string;
6
- properties: IMetadataProperty[];
7
- description?: string;
8
- jsDocTags: IJsDocTagInfo[];
9
-
10
- /**
11
- * @internal
12
- */
13
- index: number;
14
-
15
- /**
16
- * @internal
17
- */
18
- validated: boolean;
19
-
20
- /**
21
- * @internal
22
- */
23
- recursive: boolean;
24
-
25
- /**
26
- * @internal
27
- */
28
- nullables: boolean[];
29
- }
1
+ import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
+ import { IMetadataProperty } from "./IMetadataProperty";
3
+
4
+ export interface IMetadataObject {
5
+ name: string;
6
+ properties: IMetadataProperty[];
7
+ description?: string;
8
+ jsDocTags: IJsDocTagInfo[];
9
+
10
+ /**
11
+ * @internal
12
+ */
13
+ index: number;
14
+
15
+ /**
16
+ * @internal
17
+ */
18
+ validated: boolean;
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+ recursive: boolean;
24
+
25
+ /**
26
+ * @internal
27
+ */
28
+ nullables: boolean[];
29
+ }
@@ -1,11 +1,11 @@
1
- import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
- import { IMetadata } from "./IMetadata";
3
- import { IMetadataTag } from "./IMetadataTag";
4
-
5
- export interface IMetadataProperty {
6
- key: IMetadata;
7
- value: IMetadata;
8
- description?: string;
9
- tags: IMetadataTag[];
10
- jsDocTags: IJsDocTagInfo[];
11
- }
1
+ import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
+ import { IMetadata } from "./IMetadata";
3
+ import { IMetadataTag } from "./IMetadataTag";
4
+
5
+ export interface IMetadataProperty {
6
+ key: IMetadata;
7
+ value: IMetadata;
8
+ description?: string;
9
+ tags: IMetadataTag[];
10
+ jsDocTags: IJsDocTagInfo[];
11
+ }