typia 3.4.6 → 3.4.8

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 (130) hide show
  1. package/README.md +12 -2
  2. package/lib/executable/internal/CommandParser.d.ts +3 -0
  3. package/lib/executable/internal/CommandParser.js +21 -0
  4. package/lib/executable/internal/CommandParser.js.map +1 -0
  5. package/lib/executable/internal/TypiaSetupWizard.d.ts +2 -2
  6. package/lib/executable/internal/TypiaSetupWizard.js +57 -35
  7. package/lib/executable/internal/TypiaSetupWizard.js.map +1 -1
  8. package/lib/executable/typia.js +22 -21
  9. package/lib/executable/typia.js.map +1 -1
  10. package/lib/factories/internal/iterate_metadata.js +1 -1
  11. package/lib/factories/internal/iterate_metadata.js.map +1 -1
  12. package/lib/factories/internal/iterate_metadata_tuple.d.ts +1 -1
  13. package/lib/factories/internal/iterate_metadata_tuple.js +5 -13
  14. package/lib/factories/internal/iterate_metadata_tuple.js.map +1 -1
  15. package/package.json +2 -2
  16. package/src/IValidation.ts +21 -21
  17. package/src/Primitive.ts +82 -82
  18. package/src/TypeGuardError.ts +36 -36
  19. package/src/executable/internal/CommandParser.ts +15 -0
  20. package/src/executable/internal/TypiaSetupWizard.ts +108 -87
  21. package/src/executable/typia.ts +25 -14
  22. package/src/factories/CommentFactory.ts +10 -10
  23. package/src/factories/ExpressionFactory.ts +52 -52
  24. package/src/factories/IdentifierFactory.ts +72 -72
  25. package/src/factories/LiteralFactory.ts +44 -44
  26. package/src/factories/MetadataCollection.ts +122 -122
  27. package/src/factories/MetadataFactory.ts +46 -46
  28. package/src/factories/StatementFactory.ts +60 -60
  29. package/src/factories/TemplateFactory.ts +56 -56
  30. package/src/factories/TypeFactory.ts +101 -101
  31. package/src/factories/ValueFactory.ts +12 -12
  32. package/src/factories/internal/MetadataHelper.ts +12 -12
  33. package/src/factories/internal/emplace_metadata_object.ts +140 -140
  34. package/src/factories/internal/explore_metadata.ts +91 -91
  35. package/src/factories/internal/iterate_metadata.ts +1 -2
  36. package/src/factories/internal/iterate_metadata_array.ts +29 -29
  37. package/src/factories/internal/iterate_metadata_atomic.ts +59 -59
  38. package/src/factories/internal/iterate_metadata_coalesce.ts +33 -33
  39. package/src/factories/internal/iterate_metadata_constant.ts +58 -58
  40. package/src/factories/internal/iterate_metadata_map.ts +41 -41
  41. package/src/factories/internal/iterate_metadata_object.ts +45 -45
  42. package/src/factories/internal/iterate_metadata_resolve.ts +27 -27
  43. package/src/factories/internal/iterate_metadata_set.ts +33 -33
  44. package/src/factories/internal/iterate_metadata_template.ts +38 -38
  45. package/src/factories/internal/iterate_metadata_tuple.ts +45 -51
  46. package/src/factories/internal/iterate_metadata_union.ts +59 -59
  47. package/src/functional/$every.ts +11 -11
  48. package/src/functional/$guard.ts +35 -35
  49. package/src/functional/$is_email.ts +5 -5
  50. package/src/functional/$is_ipv4.ts +5 -5
  51. package/src/functional/$is_ipv6.ts +5 -5
  52. package/src/functional/$is_url.ts +5 -5
  53. package/src/functional/$is_uuid.ts +5 -5
  54. package/src/functional/$join.ts +50 -50
  55. package/src/functional/$report.ts +15 -15
  56. package/src/functional/$rest.ts +3 -3
  57. package/src/functional/$string.ts +37 -37
  58. package/src/functional/$tail.ts +6 -6
  59. package/src/metadata/IJsDocTagInfo.ts +10 -10
  60. package/src/metadata/IMetadata.ts +25 -25
  61. package/src/metadata/IMetadataApplication.ts +7 -7
  62. package/src/metadata/IMetadataConstant.ts +16 -16
  63. package/src/metadata/IMetadataEntry.ts +6 -6
  64. package/src/metadata/IMetadataObject.ts +29 -29
  65. package/src/metadata/IMetadataProperty.ts +11 -11
  66. package/src/metadata/IMetadataTag.ts +122 -122
  67. package/src/metadata/Metadata.ts +477 -477
  68. package/src/metadata/MetadataConstant.ts +3 -3
  69. package/src/metadata/MetadataObject.ts +131 -131
  70. package/src/metadata/MetadataProperty.ts +64 -64
  71. package/src/programmers/AssertParseProgrammer.ts +45 -45
  72. package/src/programmers/AssertProgrammer.ts +444 -444
  73. package/src/programmers/AssertStringifyProgrammer.ts +45 -45
  74. package/src/programmers/CheckerProgrammer.ts +798 -798
  75. package/src/programmers/FeatureProgrammer.ts +327 -327
  76. package/src/programmers/IsParseProgrammer.ts +51 -51
  77. package/src/programmers/IsProgrammer.ts +169 -169
  78. package/src/programmers/IsStringifyProgrammer.ts +49 -49
  79. package/src/programmers/ValidateParseProgrammer.ts +49 -49
  80. package/src/programmers/ValidateProgrammer.ts +236 -236
  81. package/src/programmers/ValidateStringifyProgrammer.ts +60 -60
  82. package/src/programmers/helpers/AtomicPredicator.ts +15 -15
  83. package/src/programmers/helpers/FunctionImporeter.ts +31 -31
  84. package/src/programmers/helpers/IExpressionEntry.ts +10 -10
  85. package/src/programmers/helpers/OptionPredicator.ts +18 -18
  86. package/src/programmers/helpers/StringifyJoinder.ts +111 -111
  87. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  88. package/src/programmers/helpers/UnionExplorer.ts +437 -437
  89. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  90. package/src/programmers/internal/application_boolean.ts +17 -17
  91. package/src/programmers/internal/application_constant.ts +29 -29
  92. package/src/programmers/internal/application_default_string.ts +32 -32
  93. package/src/programmers/internal/application_native.ts +29 -29
  94. package/src/programmers/internal/application_schema.ts +221 -221
  95. package/src/programmers/internal/application_templates.ts +27 -27
  96. package/src/programmers/internal/application_tuple.ts +25 -25
  97. package/src/programmers/internal/check_array.ts +44 -44
  98. package/src/programmers/internal/check_dynamic_properties.ts +146 -146
  99. package/src/programmers/internal/check_everything.ts +25 -25
  100. package/src/programmers/internal/check_length.ts +46 -46
  101. package/src/programmers/internal/check_native.ts +9 -9
  102. package/src/programmers/internal/check_number.ts +181 -181
  103. package/src/programmers/internal/check_object.ts +42 -42
  104. package/src/programmers/internal/check_string.ts +24 -24
  105. package/src/programmers/internal/check_string_tags.ts +63 -63
  106. package/src/programmers/internal/check_template.ts +50 -50
  107. package/src/programmers/internal/decode_union_object.ts +73 -73
  108. package/src/programmers/internal/feature_object_entries.ts +49 -49
  109. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  110. package/src/programmers/internal/stringify_dynamic_properties.ts +164 -164
  111. package/src/programmers/internal/stringify_native.ts +8 -8
  112. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  113. package/src/programmers/internal/template_to_pattern.ts +15 -15
  114. package/src/schemas/IJsonApplication.ts +9 -9
  115. package/src/transform.ts +20 -20
  116. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  117. package/src/transformers/FileTransformer.ts +49 -49
  118. package/src/transformers/IProject.ts +11 -11
  119. package/src/transformers/ITransformOptions.ts +4 -4
  120. package/src/transformers/NodeTransformer.ts +19 -19
  121. package/src/typings/Atomic.ts +17 -17
  122. package/src/typings/ClassProperties.ts +5 -5
  123. package/src/typings/OmitNever.ts +3 -3
  124. package/src/typings/SpecialFields.ts +3 -3
  125. package/src/typings/Writable.ts +11 -11
  126. package/src/utils/ArrayUtil.ts +49 -49
  127. package/src/utils/Escaper.ts +50 -50
  128. package/src/utils/MapUtil.ts +14 -14
  129. package/src/utils/PatternUtil.ts +30 -30
  130. 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
+ }