typia 3.4.22 → 3.4.23

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 (124) hide show
  1. package/README.md +57 -23
  2. package/lib/programmers/AssertProgrammer.js +79 -70
  3. package/lib/programmers/AssertProgrammer.js.map +1 -1
  4. package/lib/programmers/IsProgrammer.d.ts +1 -0
  5. package/lib/programmers/IsProgrammer.js +4 -0
  6. package/lib/programmers/IsProgrammer.js.map +1 -1
  7. package/lib/programmers/ValidateProgrammer.js +68 -59
  8. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  9. package/lib/programmers/helpers/OptionPredicator.d.ts +1 -0
  10. package/lib/programmers/helpers/OptionPredicator.js +4 -0
  11. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  12. package/lib/programmers/internal/check_dynamic_properties.js +5 -0
  13. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  14. package/lib/programmers/internal/check_object.d.ts +1 -0
  15. package/lib/programmers/internal/check_object.js.map +1 -1
  16. package/lib/transformers/ITransformOptions.d.ts +10 -0
  17. package/package.json +2 -2
  18. package/src/IValidation.ts +21 -21
  19. package/src/Primitive.ts +82 -82
  20. package/src/TypeGuardError.ts +36 -36
  21. package/src/executable/internal/CommandParser.ts +15 -15
  22. package/src/factories/CommentFactory.ts +10 -10
  23. package/src/factories/ExpressionFactory.ts +66 -66
  24. package/src/factories/IdentifierFactory.ts +72 -72
  25. package/src/factories/LiteralFactory.ts +44 -44
  26. package/src/factories/StatementFactory.ts +60 -60
  27. package/src/factories/TemplateFactory.ts +56 -56
  28. package/src/factories/TypeFactory.ts +101 -101
  29. package/src/factories/ValueFactory.ts +12 -12
  30. package/src/functional/$every.ts +11 -11
  31. package/src/functional/$is_email.ts +5 -5
  32. package/src/functional/$is_ipv4.ts +5 -5
  33. package/src/functional/$is_ipv6.ts +5 -5
  34. package/src/functional/$is_url.ts +5 -5
  35. package/src/functional/$is_uuid.ts +5 -5
  36. package/src/functional/$join.ts +50 -50
  37. package/src/functional/$report.ts +15 -15
  38. package/src/functional/$rest.ts +3 -3
  39. package/src/functional/$string.ts +37 -37
  40. package/src/functional/$tail.ts +6 -6
  41. package/src/index.ts +4 -4
  42. package/src/metadata/IJsDocTagInfo.ts +10 -10
  43. package/src/metadata/IMetadata.ts +25 -25
  44. package/src/metadata/IMetadataApplication.ts +7 -7
  45. package/src/metadata/IMetadataConstant.ts +16 -16
  46. package/src/metadata/IMetadataEntry.ts +6 -6
  47. package/src/metadata/IMetadataObject.ts +29 -29
  48. package/src/metadata/IMetadataProperty.ts +11 -11
  49. package/src/metadata/MetadataConstant.ts +3 -3
  50. package/src/metadata/MetadataObject.ts +131 -131
  51. package/src/metadata/MetadataProperty.ts +64 -64
  52. package/src/programmers/ApplicationProgrammer.ts +55 -55
  53. package/src/programmers/AssertProgrammer.ts +36 -29
  54. package/src/programmers/IsProgrammer.ts +5 -0
  55. package/src/programmers/ValidateProgrammer.ts +36 -29
  56. package/src/programmers/helpers/AtomicPredicator.ts +15 -15
  57. package/src/programmers/helpers/FunctionImporeter.ts +31 -31
  58. package/src/programmers/helpers/IExpressionEntry.ts +10 -10
  59. package/src/programmers/helpers/OptionPredicator.ts +4 -0
  60. package/src/programmers/helpers/StringifyJoinder.ts +111 -111
  61. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  62. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  63. package/src/programmers/internal/application_array.ts +47 -47
  64. package/src/programmers/internal/application_boolean.ts +17 -17
  65. package/src/programmers/internal/application_constant.ts +29 -29
  66. package/src/programmers/internal/application_default_string.ts +32 -32
  67. package/src/programmers/internal/application_native.ts +29 -29
  68. package/src/programmers/internal/application_number.ts +76 -76
  69. package/src/programmers/internal/application_string.ts +49 -49
  70. package/src/programmers/internal/application_templates.ts +27 -27
  71. package/src/programmers/internal/application_tuple.ts +29 -29
  72. package/src/programmers/internal/check_dynamic_properties.ts +164 -146
  73. package/src/programmers/internal/check_everything.ts +25 -25
  74. package/src/programmers/internal/check_length.ts +46 -46
  75. package/src/programmers/internal/check_native.ts +9 -9
  76. package/src/programmers/internal/check_object.ts +43 -42
  77. package/src/programmers/internal/check_string.ts +24 -24
  78. package/src/programmers/internal/check_string_tags.ts +63 -63
  79. package/src/programmers/internal/check_template.ts +50 -50
  80. package/src/programmers/internal/decode_union_object.ts +73 -73
  81. package/src/programmers/internal/feature_object_entries.ts +49 -49
  82. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  83. package/src/programmers/internal/stringify_dynamic_properties.ts +164 -164
  84. package/src/programmers/internal/stringify_native.ts +8 -8
  85. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  86. package/src/programmers/internal/template_to_pattern.ts +15 -15
  87. package/src/schemas/IJsonApplication.ts +9 -9
  88. package/src/schemas/IJsonComponents.ts +26 -26
  89. package/src/transform.ts +20 -20
  90. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  91. package/src/transformers/FileTransformer.ts +49 -49
  92. package/src/transformers/IProject.ts +11 -11
  93. package/src/transformers/ITransformOptions.ts +11 -0
  94. package/src/transformers/NodeTransformer.ts +19 -19
  95. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
  96. package/src/transformers/features/parsers/AssertParseTransformer.ts +36 -36
  97. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +32 -32
  98. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +32 -32
  99. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +32 -32
  100. package/src/transformers/features/parsers/IsParseTransformer.ts +36 -36
  101. package/src/transformers/features/parsers/ValidateParseTransformer.ts +36 -36
  102. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +38 -38
  103. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +32 -32
  104. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +32 -32
  105. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +31 -31
  106. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +32 -32
  107. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +38 -38
  108. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +38 -38
  109. package/src/transformers/features/validators/AssertTransformer.ts +43 -43
  110. package/src/transformers/features/validators/CreateAssertTransformer.ts +35 -35
  111. package/src/transformers/features/validators/CreateIsTransformer.ts +35 -35
  112. package/src/transformers/features/validators/CreateValidateTransformer.ts +35 -35
  113. package/src/transformers/features/validators/IsTransformer.ts +43 -43
  114. package/src/transformers/features/validators/ValidateTransformer.ts +43 -43
  115. package/src/typings/Atomic.ts +17 -17
  116. package/src/typings/ClassProperties.ts +5 -5
  117. package/src/typings/OmitNever.ts +3 -3
  118. package/src/typings/SpecialFields.ts +3 -3
  119. package/src/typings/Writable.ts +11 -11
  120. package/src/utils/ArrayUtil.ts +49 -49
  121. package/src/utils/Escaper.ts +50 -50
  122. package/src/utils/MapUtil.ts +14 -14
  123. package/src/utils/PatternUtil.ts +30 -30
  124. package/src/utils/Singleton.ts +17 -17
@@ -1,50 +1,50 @@
1
- export function $join(str: string): string {
2
- return variable(str) ? `.${str}` : `[${JSON.stringify(str)}]`;
3
- }
4
-
5
- function variable(str: string): boolean {
6
- return reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
7
- }
8
-
9
- function reserved(str: string): boolean {
10
- return RESERVED.has(str);
11
- }
12
-
13
- const RESERVED: Set<string> = new Set([
14
- "break",
15
- "case",
16
- "catch",
17
- "class",
18
- "const",
19
- "continue",
20
- "debugger",
21
- "default",
22
- "delete",
23
- "do",
24
- "else",
25
- "enum",
26
- "export",
27
- "extends",
28
- "false",
29
- "finally",
30
- "for",
31
- "function",
32
- "if",
33
- "import",
34
- "in",
35
- "instanceof",
36
- "new",
37
- "null",
38
- "return",
39
- "super",
40
- "switch",
41
- "this",
42
- "throw",
43
- "true",
44
- "try",
45
- "typeof",
46
- "var",
47
- "void",
48
- "while",
49
- "with",
50
- ]);
1
+ export function $join(str: string): string {
2
+ return variable(str) ? `.${str}` : `[${JSON.stringify(str)}]`;
3
+ }
4
+
5
+ function variable(str: string): boolean {
6
+ return reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
7
+ }
8
+
9
+ function reserved(str: string): boolean {
10
+ return RESERVED.has(str);
11
+ }
12
+
13
+ const RESERVED: Set<string> = new Set([
14
+ "break",
15
+ "case",
16
+ "catch",
17
+ "class",
18
+ "const",
19
+ "continue",
20
+ "debugger",
21
+ "default",
22
+ "delete",
23
+ "do",
24
+ "else",
25
+ "enum",
26
+ "export",
27
+ "extends",
28
+ "false",
29
+ "finally",
30
+ "for",
31
+ "function",
32
+ "if",
33
+ "import",
34
+ "in",
35
+ "instanceof",
36
+ "new",
37
+ "null",
38
+ "return",
39
+ "super",
40
+ "switch",
41
+ "this",
42
+ "throw",
43
+ "true",
44
+ "try",
45
+ "typeof",
46
+ "var",
47
+ "void",
48
+ "while",
49
+ "with",
50
+ ]);
@@ -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 function $rest(str: string): string {
2
- return str.length === 2 ? "" : "," + str.substring(1, str.length - 1);
3
- }
1
+ export function $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 function $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 function $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,6 +1,6 @@
1
- /**
2
- * @internal
3
- */
4
- export function $tail(str: string): string {
5
- return str[str.length - 1] === "," ? str.substring(0, str.length - 1) : str;
6
- }
1
+ /**
2
+ * @internal
3
+ */
4
+ export function $tail(str: string): string {
5
+ return str[str.length - 1] === "," ? str.substring(0, str.length - 1) : str;
6
+ }
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,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,25 +1,25 @@
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
- nullable: boolean;
10
- functional: boolean;
11
-
12
- atomics: Atomic.Literal[];
13
- constants: IMetadataConstant[];
14
- templates: IMetadata[][];
15
- resolved: IMetadata | null;
16
-
17
- rest: IMetadata | null;
18
- arrays: IMetadata[];
19
- tuples: IMetadata[][];
20
- objects: string[];
21
-
22
- natives: string[];
23
- sets: IMetadata[];
24
- maps: IMetadataEntry[];
25
- }
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
+ nullable: boolean;
10
+ functional: boolean;
11
+
12
+ atomics: Atomic.Literal[];
13
+ constants: IMetadataConstant[];
14
+ templates: IMetadata[][];
15
+ resolved: IMetadata | null;
16
+
17
+ rest: IMetadata | null;
18
+ arrays: IMetadata[];
19
+ tuples: IMetadata[][];
20
+ objects: string[];
21
+
22
+ natives: string[];
23
+ sets: IMetadata[];
24
+ maps: IMetadataEntry[];
25
+ }
@@ -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
+ }
@@ -1,3 +1,3 @@
1
- import { IMetadataConstant } from "./IMetadataConstant";
2
-
3
- export import MetadataConstant = IMetadataConstant;
1
+ import { IMetadataConstant } from "./IMetadataConstant";
2
+
3
+ export import MetadataConstant = IMetadataConstant;