typia 3.4.6 → 3.4.7

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 (119) hide show
  1. package/lib/executable/typia.js +0 -0
  2. package/lib/factories/internal/iterate_metadata.js +1 -1
  3. package/lib/factories/internal/iterate_metadata.js.map +1 -1
  4. package/lib/factories/internal/iterate_metadata_tuple.d.ts +1 -1
  5. package/lib/factories/internal/iterate_metadata_tuple.js +5 -13
  6. package/lib/factories/internal/iterate_metadata_tuple.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/IValidation.ts +21 -21
  9. package/src/Primitive.ts +82 -82
  10. package/src/TypeGuardError.ts +36 -36
  11. package/src/factories/CommentFactory.ts +10 -10
  12. package/src/factories/ExpressionFactory.ts +52 -52
  13. package/src/factories/IdentifierFactory.ts +72 -72
  14. package/src/factories/LiteralFactory.ts +44 -44
  15. package/src/factories/MetadataCollection.ts +122 -122
  16. package/src/factories/MetadataFactory.ts +46 -46
  17. package/src/factories/StatementFactory.ts +60 -60
  18. package/src/factories/TemplateFactory.ts +56 -56
  19. package/src/factories/TypeFactory.ts +101 -101
  20. package/src/factories/ValueFactory.ts +12 -12
  21. package/src/factories/internal/MetadataHelper.ts +12 -12
  22. package/src/factories/internal/emplace_metadata_object.ts +140 -140
  23. package/src/factories/internal/explore_metadata.ts +91 -91
  24. package/src/factories/internal/iterate_metadata.ts +1 -2
  25. package/src/factories/internal/iterate_metadata_array.ts +29 -29
  26. package/src/factories/internal/iterate_metadata_atomic.ts +59 -59
  27. package/src/factories/internal/iterate_metadata_coalesce.ts +33 -33
  28. package/src/factories/internal/iterate_metadata_constant.ts +58 -58
  29. package/src/factories/internal/iterate_metadata_map.ts +41 -41
  30. package/src/factories/internal/iterate_metadata_object.ts +45 -45
  31. package/src/factories/internal/iterate_metadata_resolve.ts +27 -27
  32. package/src/factories/internal/iterate_metadata_set.ts +33 -33
  33. package/src/factories/internal/iterate_metadata_template.ts +38 -38
  34. package/src/factories/internal/iterate_metadata_tuple.ts +45 -51
  35. package/src/factories/internal/iterate_metadata_union.ts +59 -59
  36. package/src/functional/$every.ts +11 -11
  37. package/src/functional/$guard.ts +35 -35
  38. package/src/functional/$is_email.ts +5 -5
  39. package/src/functional/$is_ipv4.ts +5 -5
  40. package/src/functional/$is_ipv6.ts +5 -5
  41. package/src/functional/$is_url.ts +5 -5
  42. package/src/functional/$is_uuid.ts +5 -5
  43. package/src/functional/$join.ts +50 -50
  44. package/src/functional/$report.ts +15 -15
  45. package/src/functional/$rest.ts +3 -3
  46. package/src/functional/$string.ts +37 -37
  47. package/src/functional/$tail.ts +6 -6
  48. package/src/metadata/IJsDocTagInfo.ts +10 -10
  49. package/src/metadata/IMetadata.ts +25 -25
  50. package/src/metadata/IMetadataApplication.ts +7 -7
  51. package/src/metadata/IMetadataConstant.ts +16 -16
  52. package/src/metadata/IMetadataEntry.ts +6 -6
  53. package/src/metadata/IMetadataObject.ts +29 -29
  54. package/src/metadata/IMetadataProperty.ts +11 -11
  55. package/src/metadata/IMetadataTag.ts +122 -122
  56. package/src/metadata/Metadata.ts +477 -477
  57. package/src/metadata/MetadataConstant.ts +3 -3
  58. package/src/metadata/MetadataObject.ts +131 -131
  59. package/src/metadata/MetadataProperty.ts +64 -64
  60. package/src/programmers/AssertParseProgrammer.ts +45 -45
  61. package/src/programmers/AssertProgrammer.ts +444 -444
  62. package/src/programmers/AssertStringifyProgrammer.ts +45 -45
  63. package/src/programmers/CheckerProgrammer.ts +798 -798
  64. package/src/programmers/FeatureProgrammer.ts +327 -327
  65. package/src/programmers/IsParseProgrammer.ts +51 -51
  66. package/src/programmers/IsProgrammer.ts +169 -169
  67. package/src/programmers/IsStringifyProgrammer.ts +49 -49
  68. package/src/programmers/ValidateParseProgrammer.ts +49 -49
  69. package/src/programmers/ValidateProgrammer.ts +236 -236
  70. package/src/programmers/ValidateStringifyProgrammer.ts +60 -60
  71. package/src/programmers/helpers/AtomicPredicator.ts +15 -15
  72. package/src/programmers/helpers/FunctionImporeter.ts +31 -31
  73. package/src/programmers/helpers/IExpressionEntry.ts +10 -10
  74. package/src/programmers/helpers/OptionPredicator.ts +18 -18
  75. package/src/programmers/helpers/StringifyJoinder.ts +111 -111
  76. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  77. package/src/programmers/helpers/UnionExplorer.ts +437 -437
  78. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  79. package/src/programmers/internal/application_boolean.ts +17 -17
  80. package/src/programmers/internal/application_constant.ts +29 -29
  81. package/src/programmers/internal/application_default_string.ts +32 -32
  82. package/src/programmers/internal/application_native.ts +29 -29
  83. package/src/programmers/internal/application_schema.ts +221 -221
  84. package/src/programmers/internal/application_templates.ts +27 -27
  85. package/src/programmers/internal/application_tuple.ts +25 -25
  86. package/src/programmers/internal/check_array.ts +44 -44
  87. package/src/programmers/internal/check_dynamic_properties.ts +146 -146
  88. package/src/programmers/internal/check_everything.ts +25 -25
  89. package/src/programmers/internal/check_length.ts +46 -46
  90. package/src/programmers/internal/check_native.ts +9 -9
  91. package/src/programmers/internal/check_number.ts +181 -181
  92. package/src/programmers/internal/check_object.ts +42 -42
  93. package/src/programmers/internal/check_string.ts +24 -24
  94. package/src/programmers/internal/check_string_tags.ts +63 -63
  95. package/src/programmers/internal/check_template.ts +50 -50
  96. package/src/programmers/internal/decode_union_object.ts +73 -73
  97. package/src/programmers/internal/feature_object_entries.ts +49 -49
  98. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  99. package/src/programmers/internal/stringify_dynamic_properties.ts +164 -164
  100. package/src/programmers/internal/stringify_native.ts +8 -8
  101. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  102. package/src/programmers/internal/template_to_pattern.ts +15 -15
  103. package/src/schemas/IJsonApplication.ts +9 -9
  104. package/src/transform.ts +20 -20
  105. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  106. package/src/transformers/FileTransformer.ts +49 -49
  107. package/src/transformers/IProject.ts +11 -11
  108. package/src/transformers/ITransformOptions.ts +4 -4
  109. package/src/transformers/NodeTransformer.ts +19 -19
  110. package/src/typings/Atomic.ts +17 -17
  111. package/src/typings/ClassProperties.ts +5 -5
  112. package/src/typings/OmitNever.ts +3 -3
  113. package/src/typings/SpecialFields.ts +3 -3
  114. package/src/typings/Writable.ts +11 -11
  115. package/src/utils/ArrayUtil.ts +49 -49
  116. package/src/utils/Escaper.ts +50 -50
  117. package/src/utils/MapUtil.ts +14 -14
  118. package/src/utils/PatternUtil.ts +30 -30
  119. package/src/utils/Singleton.ts +17 -17
@@ -1,31 +1,31 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { StatementFactory } from "../../factories/StatementFactory";
5
-
6
- export class FunctionImporter {
7
- private readonly used_: Set<string> = new Set();
8
- private sequence_: number = 0;
9
-
10
- public empty(): boolean {
11
- return this.used_.size === 0;
12
- }
13
-
14
- public use(name: string): ts.Identifier {
15
- this.used_.add(name);
16
- return ts.factory.createIdentifier("$" + name);
17
- }
18
-
19
- public declare(modulo: ts.LeftHandSideExpression): ts.Statement[] {
20
- return [...this.used_].map((name) =>
21
- StatementFactory.constant(
22
- "$" + name,
23
- IdentifierFactory.join(modulo, name),
24
- ),
25
- );
26
- }
27
-
28
- public increment(): number {
29
- return ++this.sequence_;
30
- }
31
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+
6
+ export class FunctionImporter {
7
+ private readonly used_: Set<string> = new Set();
8
+ private sequence_: number = 0;
9
+
10
+ public empty(): boolean {
11
+ return this.used_.size === 0;
12
+ }
13
+
14
+ public use(name: string): ts.Identifier {
15
+ this.used_.add(name);
16
+ return ts.factory.createIdentifier("$" + name);
17
+ }
18
+
19
+ public declare(modulo: ts.LeftHandSideExpression): ts.Statement[] {
20
+ return [...this.used_].map((name) =>
21
+ StatementFactory.constant(
22
+ "$" + name,
23
+ IdentifierFactory.join(modulo, name),
24
+ ),
25
+ );
26
+ }
27
+
28
+ public increment(): number {
29
+ return ++this.sequence_;
30
+ }
31
+ }
@@ -1,10 +1,10 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../metadata/Metadata";
4
-
5
- export interface IExpressionEntry {
6
- input: ts.Expression;
7
- key: Metadata;
8
- meta: Metadata;
9
- expression: ts.Expression;
10
- }
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../metadata/Metadata";
4
+
5
+ export interface IExpressionEntry {
6
+ input: ts.Expression;
7
+ key: Metadata;
8
+ meta: Metadata;
9
+ expression: ts.Expression;
10
+ }
@@ -1,18 +1,18 @@
1
- import { ITransformOptions } from "../../transformers/ITransformOptions";
2
-
3
- export namespace OptionPredicator {
4
- export function functional(options: ITransformOptions): boolean {
5
- return options.functional !== false;
6
- }
7
-
8
- export function numeric(
9
- options: ITransformOptions,
10
- from: "checker" | "stringify",
11
- ): boolean {
12
- return (
13
- options.numeric === undefined ||
14
- options.numeric === true ||
15
- options.numeric === from
16
- );
17
- }
18
- }
1
+ import { ITransformOptions } from "../../transformers/ITransformOptions";
2
+
3
+ export namespace OptionPredicator {
4
+ export function functional(options: ITransformOptions): boolean {
5
+ return options.functional !== false;
6
+ }
7
+
8
+ export function numeric(
9
+ options: ITransformOptions,
10
+ from: "checker" | "stringify",
11
+ ): boolean {
12
+ return (
13
+ options.numeric === undefined ||
14
+ options.numeric === true ||
15
+ options.numeric === from
16
+ );
17
+ }
18
+ }
@@ -1,111 +1,111 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { TemplateFactory } from "../../factories/TemplateFactory";
5
-
6
- import { stringify_dynamic_properties } from "../internal/stringify_dynamic_properties";
7
- import { stringify_regular_properties } from "../internal/stringify_regular_properties";
8
- import { FunctionImporter } from "./FunctionImporeter";
9
- import { IExpressionEntry } from "./IExpressionEntry";
10
-
11
- export namespace StringifyJoiner {
12
- export const object =
13
- (importer: FunctionImporter) =>
14
- (entries: IExpressionEntry[]): ts.Expression => {
15
- // CHECK AND SORT ENTRIES
16
- const regular: IExpressionEntry[] = entries.filter((entry) =>
17
- entry.key.isSoleLiteral(),
18
- );
19
- const dynamic: IExpressionEntry[] = entries.filter(
20
- (entry) => !entry.key.isSoleLiteral(),
21
- );
22
- if (regular.length === 0 && dynamic.length === 0)
23
- return ts.factory.createStringLiteral("{}");
24
-
25
- // PROPERTIES
26
- const expressions: ts.Expression[] = [
27
- ...stringify_regular_properties(regular, dynamic),
28
- ...(dynamic.length
29
- ? [
30
- stringify_dynamic_properties(
31
- dynamic,
32
- regular.map((r) => r.key.getSoleLiteral()!),
33
- ),
34
- ]
35
- : []),
36
- ];
37
-
38
- // POP LAST COMMA, IF REQUIRED
39
- const filtered: ts.Expression[] =
40
- (regular.length &&
41
- regular[regular.length - 1]!.meta.required &&
42
- dynamic.length === 0) ||
43
- (regular.length === 0 && dynamic.length)
44
- ? expressions
45
- : [
46
- ts.factory.createCallExpression(
47
- importer.use("tail"),
48
- undefined,
49
- [TemplateFactory.generate(expressions)],
50
- ),
51
- ];
52
-
53
- // RETURNS WITH OBJECT BRACKET
54
- return TemplateFactory.generate([
55
- ts.factory.createStringLiteral(`{`),
56
- ...filtered,
57
- ts.factory.createStringLiteral(`}`),
58
- ]);
59
- };
60
-
61
- export function array(
62
- input: ts.Expression,
63
- arrow: ts.ArrowFunction,
64
- ): ts.Expression {
65
- return TemplateFactory.generate([
66
- ts.factory.createStringLiteral(`[`),
67
- ts.factory.createCallExpression(
68
- ts.factory.createPropertyAccessExpression(
69
- ts.factory.createCallExpression(
70
- IdentifierFactory.join(input, "map"),
71
- undefined,
72
- [arrow],
73
- ),
74
- ts.factory.createIdentifier("join"),
75
- ),
76
- undefined,
77
- [ts.factory.createStringLiteral(`,`)],
78
- ),
79
- ts.factory.createStringLiteral(`]`),
80
- ]);
81
- }
82
-
83
- export function tuple(
84
- children: ts.Expression[],
85
- rest: ts.Expression | null,
86
- ): ts.Expression {
87
- if (children.length === 0) return ts.factory.createStringLiteral("[]");
88
- if (
89
- rest === null &&
90
- children.every((child) => ts.isStringLiteral(child))
91
- )
92
- return ts.factory.createStringLiteral(
93
- "[" +
94
- children
95
- .map((child) => (child as ts.StringLiteral).text)
96
- .join(",") +
97
- "]",
98
- );
99
-
100
- const elements: ts.Expression[] = [ts.factory.createStringLiteral(`[`)];
101
- children.forEach((child, i) => {
102
- elements.push(child);
103
- if (i !== children.length - 1)
104
- elements.push(ts.factory.createStringLiteral(`,`));
105
- });
106
- if (rest !== null) elements.push(rest);
107
-
108
- elements.push(ts.factory.createStringLiteral(`]`));
109
- return TemplateFactory.generate(elements);
110
- }
111
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { TemplateFactory } from "../../factories/TemplateFactory";
5
+
6
+ import { stringify_dynamic_properties } from "../internal/stringify_dynamic_properties";
7
+ import { stringify_regular_properties } from "../internal/stringify_regular_properties";
8
+ import { FunctionImporter } from "./FunctionImporeter";
9
+ import { IExpressionEntry } from "./IExpressionEntry";
10
+
11
+ export namespace StringifyJoiner {
12
+ export const object =
13
+ (importer: FunctionImporter) =>
14
+ (entries: IExpressionEntry[]): ts.Expression => {
15
+ // CHECK AND SORT ENTRIES
16
+ const regular: IExpressionEntry[] = entries.filter((entry) =>
17
+ entry.key.isSoleLiteral(),
18
+ );
19
+ const dynamic: IExpressionEntry[] = entries.filter(
20
+ (entry) => !entry.key.isSoleLiteral(),
21
+ );
22
+ if (regular.length === 0 && dynamic.length === 0)
23
+ return ts.factory.createStringLiteral("{}");
24
+
25
+ // PROPERTIES
26
+ const expressions: ts.Expression[] = [
27
+ ...stringify_regular_properties(regular, dynamic),
28
+ ...(dynamic.length
29
+ ? [
30
+ stringify_dynamic_properties(
31
+ dynamic,
32
+ regular.map((r) => r.key.getSoleLiteral()!),
33
+ ),
34
+ ]
35
+ : []),
36
+ ];
37
+
38
+ // POP LAST COMMA, IF REQUIRED
39
+ const filtered: ts.Expression[] =
40
+ (regular.length &&
41
+ regular[regular.length - 1]!.meta.required &&
42
+ dynamic.length === 0) ||
43
+ (regular.length === 0 && dynamic.length)
44
+ ? expressions
45
+ : [
46
+ ts.factory.createCallExpression(
47
+ importer.use("tail"),
48
+ undefined,
49
+ [TemplateFactory.generate(expressions)],
50
+ ),
51
+ ];
52
+
53
+ // RETURNS WITH OBJECT BRACKET
54
+ return TemplateFactory.generate([
55
+ ts.factory.createStringLiteral(`{`),
56
+ ...filtered,
57
+ ts.factory.createStringLiteral(`}`),
58
+ ]);
59
+ };
60
+
61
+ export function array(
62
+ input: ts.Expression,
63
+ arrow: ts.ArrowFunction,
64
+ ): ts.Expression {
65
+ return TemplateFactory.generate([
66
+ ts.factory.createStringLiteral(`[`),
67
+ ts.factory.createCallExpression(
68
+ ts.factory.createPropertyAccessExpression(
69
+ ts.factory.createCallExpression(
70
+ IdentifierFactory.join(input, "map"),
71
+ undefined,
72
+ [arrow],
73
+ ),
74
+ ts.factory.createIdentifier("join"),
75
+ ),
76
+ undefined,
77
+ [ts.factory.createStringLiteral(`,`)],
78
+ ),
79
+ ts.factory.createStringLiteral(`]`),
80
+ ]);
81
+ }
82
+
83
+ export function tuple(
84
+ children: ts.Expression[],
85
+ rest: ts.Expression | null,
86
+ ): ts.Expression {
87
+ if (children.length === 0) return ts.factory.createStringLiteral("[]");
88
+ if (
89
+ rest === null &&
90
+ children.every((child) => ts.isStringLiteral(child))
91
+ )
92
+ return ts.factory.createStringLiteral(
93
+ "[" +
94
+ children
95
+ .map((child) => (child as ts.StringLiteral).text)
96
+ .join(",") +
97
+ "]",
98
+ );
99
+
100
+ const elements: ts.Expression[] = [ts.factory.createStringLiteral(`[`)];
101
+ children.forEach((child, i) => {
102
+ elements.push(child);
103
+ if (i !== children.length - 1)
104
+ elements.push(ts.factory.createStringLiteral(`,`));
105
+ });
106
+ if (rest !== null) elements.push(rest);
107
+
108
+ elements.push(ts.factory.createStringLiteral(`]`));
109
+ return TemplateFactory.generate(elements);
110
+ }
111
+ }
@@ -1,18 +1,18 @@
1
- import { Metadata } from "../../metadata/Metadata";
2
-
3
- export namespace StringifyPredicator {
4
- export function require_escape(value: string): boolean {
5
- return value
6
- .split("")
7
- .some((ch) => ESCAPED.some((escaped) => escaped === ch));
8
- }
9
-
10
- export function undefindable(meta: Metadata): boolean {
11
- return (
12
- meta.required === false ||
13
- (meta.resolved !== null && meta.resolved.required === false)
14
- );
15
- }
16
-
17
- const ESCAPED = ['"', "\\", "\b", "\f", "\n", "\n", "\r", "\t"];
18
- }
1
+ import { Metadata } from "../../metadata/Metadata";
2
+
3
+ export namespace StringifyPredicator {
4
+ export function require_escape(value: string): boolean {
5
+ return value
6
+ .split("")
7
+ .some((ch) => ESCAPED.some((escaped) => escaped === ch));
8
+ }
9
+
10
+ export function undefindable(meta: Metadata): boolean {
11
+ return (
12
+ meta.required === false ||
13
+ (meta.resolved !== null && meta.resolved.required === false)
14
+ );
15
+ }
16
+
17
+ const ESCAPED = ['"', "\\", "\b", "\f", "\n", "\n", "\r", "\t"];
18
+ }