typia 3.5.3 → 3.6.0-dev.20230219

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 (132) hide show
  1. package/README.md +3 -1
  2. package/lib/executable/TypiaGenerateWizard.d.ts +8 -0
  3. package/lib/executable/TypiaGenerateWizard.js +182 -0
  4. package/lib/executable/TypiaGenerateWizard.js.map +1 -0
  5. package/lib/executable/TypiaSetupWizard.d.ts +8 -0
  6. package/lib/executable/TypiaSetupWizard.js +218 -0
  7. package/lib/executable/TypiaSetupWizard.js.map +1 -0
  8. package/lib/executable/setup/ArgumentParser.d.ts +7 -0
  9. package/lib/executable/setup/ArgumentParser.js +155 -0
  10. package/lib/executable/setup/ArgumentParser.js.map +1 -0
  11. package/lib/executable/{internal → setup}/CommandExecutor.d.ts +0 -0
  12. package/lib/executable/{internal → setup}/CommandExecutor.js +0 -0
  13. package/lib/executable/setup/CommandExecutor.js.map +1 -0
  14. package/lib/executable/{internal → setup}/PackageManager.d.ts +0 -0
  15. package/lib/executable/{internal → setup}/PackageManager.js +0 -0
  16. package/lib/executable/setup/PackageManager.js.map +1 -0
  17. package/lib/executable/setup/PluginConfigurator.d.ts +5 -0
  18. package/lib/executable/{internal → setup}/PluginConfigurator.js +0 -0
  19. package/lib/executable/setup/PluginConfigurator.js.map +1 -0
  20. package/lib/executable/typia.js +13 -57
  21. package/lib/executable/typia.js.map +1 -1
  22. package/lib/factories/IdentifierFactory.d.ts +1 -1
  23. package/lib/factories/IdentifierFactory.js +3 -3
  24. package/lib/factories/IdentifierFactory.js.map +1 -1
  25. package/lib/factories/TypeFactory.d.ts +1 -0
  26. package/lib/factories/TypeFactory.js +15 -0
  27. package/lib/factories/TypeFactory.js.map +1 -1
  28. package/lib/generate/TypiaGenerator.d.ts +8 -0
  29. package/lib/generate/TypiaGenerator.js +211 -0
  30. package/lib/generate/TypiaGenerator.js.map +1 -0
  31. package/lib/module.d.ts +14 -8
  32. package/lib/module.js +2 -1
  33. package/lib/module.js.map +1 -1
  34. package/lib/programmers/AssertCloneProgrammer.js +8 -2
  35. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  36. package/lib/programmers/AssertParseProgrammer.js +7 -1
  37. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  38. package/lib/programmers/AssertProgrammer.js +6 -2
  39. package/lib/programmers/AssertProgrammer.js.map +1 -1
  40. package/lib/programmers/AssertPruneProgrammer.js +5 -1
  41. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  42. package/lib/programmers/AssertStringifyProgrammer.js +5 -1
  43. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  44. package/lib/programmers/CheckerProgrammer.js +8 -1
  45. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  46. package/lib/programmers/CloneProgrammer.js +13 -0
  47. package/lib/programmers/CloneProgrammer.js.map +1 -1
  48. package/lib/programmers/FeatureProgrammer.d.ts +6 -1
  49. package/lib/programmers/FeatureProgrammer.js +35 -26
  50. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  51. package/lib/programmers/IsCloneProgrammer.js +10 -1
  52. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  53. package/lib/programmers/IsParseProgrammer.js +8 -2
  54. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  55. package/lib/programmers/IsProgrammer.js +1 -1
  56. package/lib/programmers/IsProgrammer.js.map +1 -1
  57. package/lib/programmers/IsPruneProgrammer.js +5 -1
  58. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  59. package/lib/programmers/IsStringifyProgrammer.js +8 -1
  60. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  61. package/lib/programmers/PruneProgrammer.js +8 -0
  62. package/lib/programmers/PruneProgrammer.js.map +1 -1
  63. package/lib/programmers/RandomProgrammer.js +4 -3
  64. package/lib/programmers/RandomProgrammer.js.map +1 -1
  65. package/lib/programmers/StringifyProgrammer.js +9 -1
  66. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  67. package/lib/programmers/ValidateCloneProgrammer.js +10 -2
  68. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  69. package/lib/programmers/ValidateParseProgrammer.js +9 -1
  70. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  71. package/lib/programmers/ValidateProgrammer.js +12 -4
  72. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  73. package/lib/programmers/ValidatePruneProgrammer.js +7 -1
  74. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  75. package/lib/programmers/ValidateStringifyProgrammer.js +8 -2
  76. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  77. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  78. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  79. package/lib/programmers/internal/check_everything.js +4 -1
  80. package/lib/programmers/internal/check_everything.js.map +1 -1
  81. package/lib/programmers/internal/check_union_array_like.js +4 -1
  82. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  83. package/lib/programmers/internal/feature_object_entries.d.ts +2 -1
  84. package/lib/programmers/internal/feature_object_entries.js +28 -23
  85. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  86. package/lib/transformers/CallExpressionTransformer.js +4 -1
  87. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  88. package/package.json +1 -1
  89. package/src/executable/TypiaGenerateWizard.ts +86 -0
  90. package/src/executable/{internal/ArgumentParser.ts → TypiaSetupWizard.ts} +58 -60
  91. package/src/executable/setup/ArgumentParser.ts +89 -0
  92. package/src/executable/{internal → setup}/CommandExecutor.ts +0 -0
  93. package/src/executable/{internal → setup}/PackageManager.ts +0 -0
  94. package/src/executable/{internal → setup}/PluginConfigurator.ts +3 -3
  95. package/src/executable/typia.ts +15 -49
  96. package/src/factories/IdentifierFactory.ts +3 -2
  97. package/src/factories/TypeFactory.ts +28 -0
  98. package/src/generate/TypiaGenerator.ts +126 -0
  99. package/src/module.ts +23 -11
  100. package/src/programmers/AssertCloneProgrammer.ts +22 -3
  101. package/src/programmers/AssertParseProgrammer.ts +14 -2
  102. package/src/programmers/AssertProgrammer.ts +15 -213
  103. package/src/programmers/AssertPruneProgrammer.ts +9 -2
  104. package/src/programmers/AssertStringifyProgrammer.ts +12 -2
  105. package/src/programmers/CheckerProgrammer.ts +15 -2
  106. package/src/programmers/CloneProgrammer.ts +14 -0
  107. package/src/programmers/FeatureProgrammer.ts +64 -26
  108. package/src/programmers/IsCloneProgrammer.ts +17 -2
  109. package/src/programmers/IsParseProgrammer.ts +18 -3
  110. package/src/programmers/IsProgrammer.ts +3 -1
  111. package/src/programmers/IsPruneProgrammer.ts +16 -2
  112. package/src/programmers/IsStringifyProgrammer.ts +15 -2
  113. package/src/programmers/PruneProgrammer.ts +7 -0
  114. package/src/programmers/RandomProgrammer.ts +15 -1
  115. package/src/programmers/StringifyProgrammer.ts +8 -1
  116. package/src/programmers/ValidateCloneProgrammer.ts +23 -6
  117. package/src/programmers/ValidateParseProgrammer.ts +16 -2
  118. package/src/programmers/ValidateProgrammer.ts +44 -5
  119. package/src/programmers/ValidatePruneProgrammer.ts +14 -2
  120. package/src/programmers/ValidateStringifyProgrammer.ts +21 -6
  121. package/src/programmers/helpers/FunctionImporeter.ts +10 -1
  122. package/src/programmers/internal/check_everything.ts +8 -5
  123. package/src/programmers/internal/check_union_array_like.ts +7 -1
  124. package/src/programmers/internal/feature_object_entries.ts +6 -1
  125. package/src/transformers/CallExpressionTransformer.ts +8 -1
  126. package/lib/executable/internal/ArgumentParser.d.ts +0 -9
  127. package/lib/executable/internal/ArgumentParser.js +0 -266
  128. package/lib/executable/internal/ArgumentParser.js.map +0 -1
  129. package/lib/executable/internal/CommandExecutor.js.map +0 -1
  130. package/lib/executable/internal/PackageManager.js.map +0 -1
  131. package/lib/executable/internal/PluginConfigurator.d.ts +0 -5
  132. package/lib/executable/internal/PluginConfigurator.js.map +0 -1
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../factories/StatementFactory";
5
+ import { TypeFactory } from "../factories/TypeFactory";
5
6
 
6
7
  import { IProject } from "../transformers/IProject";
7
8
 
@@ -15,8 +16,20 @@ export namespace IsStringifyProgrammer {
15
16
  ts.factory.createArrowFunction(
16
17
  undefined,
17
18
  undefined,
18
- [IdentifierFactory.parameter("input")],
19
- undefined,
19
+ [
20
+ IdentifierFactory.parameter(
21
+ "input",
22
+ project.checker.typeToTypeNode(
23
+ type,
24
+ undefined,
25
+ undefined,
26
+ ) ?? TypeFactory.keyword("any"),
27
+ ),
28
+ ],
29
+ ts.factory.createUnionTypeNode([
30
+ TypeFactory.keyword("string"),
31
+ ts.factory.createLiteralTypeNode(ts.factory.createNull()),
32
+ ]),
20
33
  undefined,
21
34
  ts.factory.createBlock([
22
35
  StatementFactory.constant(
@@ -4,6 +4,7 @@ import { ExpressionFactory } from "../factories/ExpressionFactory";
4
4
  import { IdentifierFactory } from "../factories/IdentifierFactory";
5
5
  import { MetadataCollection } from "../factories/MetadataCollection";
6
6
  import { MetadataFactory } from "../factories/MetadataFactory";
7
+ import { TypeFactory } from "../factories/TypeFactory";
7
8
 
8
9
  import { Metadata } from "../metadata/Metadata";
9
10
 
@@ -260,6 +261,12 @@ export namespace PruneProgrammer {
260
261
  project: IProject,
261
262
  importer: FunctionImporter,
262
263
  ): FeatureProgrammer.IConfig => ({
264
+ types: {
265
+ input: (type) =>
266
+ project.checker.typeToTypeNode(type, undefined, undefined) ??
267
+ TypeFactory.keyword("any"),
268
+ output: () => TypeFactory.keyword("void"),
269
+ },
263
270
  functors: FUNCTORS,
264
271
  unioners: UNIONERS,
265
272
  trace: false,
@@ -6,6 +6,7 @@ import { MetadataCollection } from "../factories/MetadataCollection";
6
6
  import { MetadataFactory } from "../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../factories/StatementFactory";
8
8
  import { TemplateFactory } from "../factories/TemplateFactory";
9
+ import { TypeFactory } from "../factories/TypeFactory";
9
10
 
10
11
  import { IMetadataTag } from "../metadata/IMetadataTag";
11
12
  import { Metadata } from "../metadata/Metadata";
@@ -49,7 +50,18 @@ export namespace RandomProgrammer {
49
50
  [
50
51
  IdentifierFactory.parameter(
51
52
  "generator",
52
- IdentifierFactory.join(modulo, "generator"),
53
+ ts.factory.createTypeReferenceNode(
54
+ "typia.IRandomGenerator",
55
+ ),
56
+ IdentifierFactory.join(
57
+ ts.factory.createParenthesizedExpression(
58
+ ts.factory.createAsExpression(
59
+ modulo,
60
+ TypeFactory.keyword("any"),
61
+ ),
62
+ ),
63
+ "generator",
64
+ ),
53
65
  ),
54
66
  ],
55
67
  undefined,
@@ -77,12 +89,14 @@ export namespace RandomProgrammer {
77
89
  [
78
90
  IdentifierFactory.parameter(
79
91
  "recursive",
92
+ undefined,
80
93
  ts.factory.createIdentifier(
81
94
  String(obj.recursive),
82
95
  ),
83
96
  ),
84
97
  IdentifierFactory.parameter(
85
98
  "depth",
99
+ undefined,
86
100
  ts.factory.createNumericLiteral(0),
87
101
  ),
88
102
  ],
@@ -4,6 +4,7 @@ import { ExpressionFactory } from "../factories/ExpressionFactory";
4
4
  import { IdentifierFactory } from "../factories/IdentifierFactory";
5
5
  import { MetadataCollection } from "../factories/MetadataCollection";
6
6
  import { MetadataFactory } from "../factories/MetadataFactory";
7
+ import { TypeFactory } from "../factories/TypeFactory";
7
8
  import { ValueFactory } from "../factories/ValueFactory";
8
9
 
9
10
  import { IMetadataTag } from "../metadata/IMetadataTag";
@@ -374,7 +375,7 @@ export namespace StringifyProgrammer {
374
375
  decoder: decode(project, importer),
375
376
  trace: false,
376
377
  path: false,
377
- })(obj)(input);
378
+ })(importer)(obj)(input);
378
379
  return StringifyJoiner.object(importer)(
379
380
  input,
380
381
  entries,
@@ -696,6 +697,12 @@ export namespace StringifyProgrammer {
696
697
  project: IProject,
697
698
  importer: FunctionImporter,
698
699
  ): FeatureProgrammer.IConfig => ({
700
+ types: {
701
+ input: (type) =>
702
+ project.checker.typeToTypeNode(type, undefined, undefined) ??
703
+ TypeFactory.keyword("any"),
704
+ output: () => TypeFactory.keyword("string"),
705
+ },
699
706
  functors: FUNCTORS,
700
707
  unioners: UNIONERS,
701
708
  trace: false,
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../factories/StatementFactory";
5
+ import { TypeFactory } from "../factories/TypeFactory";
5
6
 
6
7
  import { IProject } from "../transformers/IProject";
7
8
 
@@ -15,8 +16,21 @@ export namespace ValidateCloneProgrammer {
15
16
  ts.factory.createArrowFunction(
16
17
  undefined,
17
18
  undefined,
18
- [IdentifierFactory.parameter("input")],
19
- undefined,
19
+ [
20
+ IdentifierFactory.parameter(
21
+ "input",
22
+ TypeFactory.keyword("any"),
23
+ ),
24
+ ],
25
+ ts.factory.createTypeReferenceNode("typia.IValidation", [
26
+ ts.factory.createTypeReferenceNode("typia.Primitive", [
27
+ project.checker.typeToTypeNode(
28
+ type,
29
+ undefined,
30
+ undefined,
31
+ ) ?? TypeFactory.keyword("any"),
32
+ ]),
33
+ ]),
20
34
  undefined,
21
35
  ts.factory.createBlock([
22
36
  StatementFactory.constant(
@@ -49,10 +63,13 @@ export namespace ValidateCloneProgrammer {
49
63
  ),
50
64
  StatementFactory.constant(
51
65
  "output",
52
- ts.factory.createCallExpression(
53
- ts.factory.createIdentifier("validate"),
54
- undefined,
55
- [ts.factory.createIdentifier("input")],
66
+ ts.factory.createAsExpression(
67
+ ts.factory.createCallExpression(
68
+ ts.factory.createIdentifier("validate"),
69
+ undefined,
70
+ [ts.factory.createIdentifier("input")],
71
+ ),
72
+ TypeFactory.keyword("any"),
56
73
  ),
57
74
  ),
58
75
  ts.factory.createIfStatement(
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../factories/StatementFactory";
5
+ import { TypeFactory } from "../factories/TypeFactory";
5
6
 
6
7
  import { IProject } from "../transformers/IProject";
7
8
 
@@ -14,8 +15,21 @@ export namespace ValidateParseProgrammer {
14
15
  ts.factory.createArrowFunction(
15
16
  undefined,
16
17
  undefined,
17
- [IdentifierFactory.parameter("input")],
18
- undefined,
18
+ [
19
+ IdentifierFactory.parameter(
20
+ "input",
21
+ TypeFactory.keyword("string"),
22
+ ),
23
+ ],
24
+ ts.factory.createTypeReferenceNode("typia.IValidation", [
25
+ ts.factory.createTypeReferenceNode("typia.Primitive", [
26
+ project.checker.typeToTypeNode(
27
+ type,
28
+ undefined,
29
+ undefined,
30
+ ) ?? TypeFactory.keyword("any"),
31
+ ]),
32
+ ]),
19
33
  undefined,
20
34
  ts.factory.createBlock([
21
35
  StatementFactory.constant(
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../factories/StatementFactory";
5
+ import { TypeFactory } from "../factories/TypeFactory";
5
6
 
6
7
  import { IProject } from "../transformers/IProject";
7
8
 
@@ -40,19 +41,43 @@ export namespace ValidateProgrammer {
40
41
  return ts.factory.createArrowFunction(
41
42
  undefined,
42
43
  undefined,
43
- [IdentifierFactory.parameter("input")],
44
- undefined,
44
+ [
45
+ IdentifierFactory.parameter(
46
+ "input",
47
+ TypeFactory.keyword("any"),
48
+ ),
49
+ ],
50
+ ts.factory.createTypeReferenceNode("typia.IValidation", [
51
+ project.checker.typeToTypeNode(
52
+ type,
53
+ undefined,
54
+ undefined,
55
+ ) ?? TypeFactory.keyword("any"),
56
+ ]),
45
57
  undefined,
46
58
  ts.factory.createBlock(
47
59
  [
48
60
  StatementFactory.constant(
49
61
  "errors",
50
- ts.factory.createArrayLiteralExpression([]),
62
+ ts.factory.createAsExpression(
63
+ ts.factory.createArrayLiteralExpression([]),
64
+ ts.factory.createArrayTypeNode(
65
+ TypeFactory.keyword("any"),
66
+ ),
67
+ ),
51
68
  ),
52
69
  StatementFactory.constant(
53
70
  "$report",
54
71
  ts.factory.createCallExpression(
55
- IdentifierFactory.join(modulo, "report"),
72
+ IdentifierFactory.join(
73
+ ts.factory.createParenthesizedExpression(
74
+ ts.factory.createAsExpression(
75
+ modulo,
76
+ TypeFactory.keyword("any"),
77
+ ),
78
+ ),
79
+ "report",
80
+ ),
56
81
  [],
57
82
  [ts.factory.createIdentifier("errors")],
58
83
  ),
@@ -76,7 +101,21 @@ export namespace ValidateProgrammer {
76
101
  ts.factory.createIdentifier("errors.length"),
77
102
  ),
78
103
  ),
79
- ts.factory.createReturnStatement(create_output()),
104
+ ts.factory.createReturnStatement(
105
+ ts.factory.createAsExpression(
106
+ create_output(),
107
+ ts.factory.createTypeReferenceNode(
108
+ "typia.IValidation",
109
+ [
110
+ project.checker.typeToTypeNode(
111
+ type,
112
+ undefined,
113
+ undefined,
114
+ ) ?? TypeFactory.keyword("any"),
115
+ ],
116
+ ),
117
+ ),
118
+ ),
80
119
  ],
81
120
  true,
82
121
  ),
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../factories/StatementFactory";
5
+ import { TypeFactory } from "../factories/TypeFactory";
5
6
 
6
7
  import { IProject } from "../transformers/IProject";
7
8
 
@@ -15,8 +16,19 @@ export namespace ValidatePruneProgrammer {
15
16
  ts.factory.createArrowFunction(
16
17
  undefined,
17
18
  undefined,
18
- [IdentifierFactory.parameter("input")],
19
- undefined,
19
+ [
20
+ IdentifierFactory.parameter(
21
+ "input",
22
+ TypeFactory.keyword("any"),
23
+ ),
24
+ ],
25
+ ts.factory.createTypeReferenceNode("typia.IValidation", [
26
+ project.checker.typeToTypeNode(
27
+ type,
28
+ undefined,
29
+ undefined,
30
+ ) ?? TypeFactory.keyword("any"),
31
+ ]),
20
32
  undefined,
21
33
  ts.factory.createBlock([
22
34
  StatementFactory.constant(
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../factories/StatementFactory";
5
+ import { TypeFactory } from "../factories/TypeFactory";
5
6
 
6
7
  import { IProject } from "../transformers/IProject";
7
8
 
@@ -15,8 +16,19 @@ export namespace ValidateStringifyProgrammer {
15
16
  ts.factory.createArrowFunction(
16
17
  undefined,
17
18
  undefined,
18
- [IdentifierFactory.parameter("input")],
19
- undefined,
19
+ [
20
+ IdentifierFactory.parameter(
21
+ "input",
22
+ project.checker.typeToTypeNode(
23
+ type,
24
+ undefined,
25
+ undefined,
26
+ ) ?? TypeFactory.keyword("any"),
27
+ ),
28
+ ],
29
+ ts.factory.createTypeReferenceNode("typia.IValidation", [
30
+ TypeFactory.keyword("string"),
31
+ ]),
20
32
  undefined,
21
33
  ts.factory.createBlock([
22
34
  StatementFactory.constant(
@@ -49,10 +61,13 @@ export namespace ValidateStringifyProgrammer {
49
61
  ),
50
62
  StatementFactory.constant(
51
63
  "output",
52
- ts.factory.createCallExpression(
53
- ts.factory.createIdentifier("validate"),
54
- undefined,
55
- [ts.factory.createIdentifier("input")],
64
+ ts.factory.createAsExpression(
65
+ ts.factory.createCallExpression(
66
+ ts.factory.createIdentifier("validate"),
67
+ undefined,
68
+ [ts.factory.createIdentifier("input")],
69
+ ),
70
+ TypeFactory.keyword("any"),
56
71
  ),
57
72
  ),
58
73
  ts.factory.createIfStatement(
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
5
6
 
6
7
  export class FunctionImporter {
7
8
  private readonly used_: Set<string> = new Set();
@@ -20,7 +21,15 @@ export class FunctionImporter {
20
21
  return [...this.used_].map((name) =>
21
22
  StatementFactory.constant(
22
23
  "$" + name,
23
- IdentifierFactory.join(modulo, name),
24
+ IdentifierFactory.join(
25
+ ts.factory.createParenthesizedExpression(
26
+ ts.factory.createAsExpression(
27
+ modulo,
28
+ TypeFactory.keyword("any"),
29
+ ),
30
+ ),
31
+ name,
32
+ ),
24
33
  ),
25
34
  );
26
35
  }
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { TypeFactory } from "../../factories/TypeFactory";
4
5
 
5
6
  /**
6
7
  * @internal
@@ -13,13 +14,15 @@ export const check_everything = (array: ts.Expression) =>
13
14
  ts.factory.createArrowFunction(
14
15
  undefined,
15
16
  undefined,
16
- [IdentifierFactory.parameter("flag")],
17
+ [
18
+ IdentifierFactory.parameter(
19
+ "flag",
20
+ TypeFactory.keyword("boolean"),
21
+ ),
22
+ ],
17
23
  undefined,
18
24
  undefined,
19
- ts.factory.createStrictEquality(
20
- ts.factory.createTrue(),
21
- ts.factory.createIdentifier("flag"),
22
- ),
25
+ ts.factory.createIdentifier("flag"),
23
26
  ),
24
27
  ],
25
28
  );
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
5
6
 
6
7
  import { IMetadataTag } from "../../metadata/IMetadataTag";
7
8
 
@@ -140,7 +141,12 @@ export const check_union_array_like =
140
141
  ts.factory.createArrowFunction(
141
142
  undefined,
142
143
  undefined,
143
- [IdentifierFactory.parameter("value")],
144
+ [
145
+ IdentifierFactory.parameter(
146
+ "value",
147
+ TypeFactory.keyword("any"),
148
+ ),
149
+ ],
144
150
  undefined,
145
151
  undefined,
146
152
  ts.factory.createStrictEquality(
@@ -7,6 +7,7 @@ import { MetadataObject } from "../../metadata/MetadataObject";
7
7
  import { Escaper } from "../../utils/Escaper";
8
8
 
9
9
  import { FeatureProgrammer } from "../FeatureProgrammer";
10
+ import { FunctionImporter } from "../helpers/FunctionImporeter";
10
11
 
11
12
  export const feature_object_entries =
12
13
  <Output extends ts.ConciseBody>(
@@ -15,6 +16,7 @@ export const feature_object_entries =
15
16
  "decoder" | "path" | "trace"
16
17
  >,
17
18
  ) =>
19
+ (importer: FunctionImporter) =>
18
20
  (obj: MetadataObject) =>
19
21
  (input: ts.Expression) =>
20
22
  obj.properties.map((prop) => {
@@ -46,7 +48,10 @@ export const feature_object_entries =
46
48
  postfix:
47
49
  sole !== null
48
50
  ? IdentifierFactory.postfix(sole)
49
- : `$join(key)`,
51
+ : (() => {
52
+ importer.use("join");
53
+ return `$join(key)`;
54
+ })(),
50
55
  },
51
56
  prop.tags,
52
57
  ),
@@ -58,7 +58,11 @@ export namespace CallExpressionTransformer {
58
58
 
59
59
  // FILE PATH
60
60
  const file: string = path.resolve(declaration.getSourceFile().fileName);
61
- if (file.indexOf(LIB_PATH) === -1 && file !== SRC_PATH)
61
+ if (
62
+ file.indexOf(LIB_PATH) === -1 &&
63
+ file !== SRC_PATH &&
64
+ file !== CLI_PATH
65
+ )
62
66
  return expression;
63
67
 
64
68
  //----
@@ -84,6 +88,9 @@ type Task = (
84
88
 
85
89
  const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
86
90
  const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
91
+ const CLI_PATH = path.resolve(
92
+ path.join(__dirname, "..", "..", "..", "src", "module.ts"),
93
+ );
87
94
 
88
95
  const FUNCTORS: Record<string, () => Task> = {
89
96
  //----
@@ -1,9 +0,0 @@
1
- import { PackageManager } from "./PackageManager";
2
- export declare namespace ArgumentParser {
3
- interface IArguments {
4
- compiler: "ts-patch" | "ttypescript";
5
- manager: "npm" | "pnpm" | "yarn";
6
- project: string | null;
7
- }
8
- function parse(pack: PackageManager): Promise<IArguments>;
9
- }