typia 5.5.0-dev.20240304 → 5.5.0-dev.20240305

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 (111) hide show
  1. package/lib/functional.d.ts +329 -0
  2. package/lib/functional.js +99 -234
  3. package/lib/functional.js.map +1 -1
  4. package/lib/programmers/AssertProgrammer.d.ts +1 -0
  5. package/lib/programmers/AssertProgrammer.js +5 -2
  6. package/lib/programmers/AssertProgrammer.js.map +1 -1
  7. package/lib/programmers/RandomProgrammer.js +3 -1
  8. package/lib/programmers/RandomProgrammer.js.map +1 -1
  9. package/lib/programmers/TypiaProgrammer.js +1 -8
  10. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  11. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.d.ts +8 -2
  12. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +22 -16
  13. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
  14. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.d.ts +1 -1
  15. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +8 -4
  16. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
  17. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.d.ts +1 -1
  18. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js +8 -7
  19. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js.map +1 -1
  20. package/lib/programmers/functional/FunctionalIsFunctionProgrammer.d.ts +6 -0
  21. package/lib/programmers/functional/FunctionalIsFunctionProgrammer.js +54 -0
  22. package/lib/programmers/functional/FunctionalIsFunctionProgrammer.js.map +1 -0
  23. package/lib/programmers/functional/FunctionalIsParametersProgrammer.d.ts +7 -0
  24. package/lib/programmers/functional/FunctionalIsParametersProgrammer.js +79 -0
  25. package/lib/programmers/functional/FunctionalIsParametersProgrammer.js.map +1 -0
  26. package/lib/programmers/functional/FunctionalIsReturnProgrammer.d.ts +10 -0
  27. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js +71 -0
  28. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js.map +1 -0
  29. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.d.ts +10 -0
  30. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js +61 -0
  31. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js.map +1 -0
  32. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.d.ts +7 -0
  33. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +104 -0
  34. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -0
  35. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.d.ts +10 -0
  36. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +74 -0
  37. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -0
  38. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +3 -1
  39. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  40. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +3 -1
  41. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  42. package/lib/programmers/http/HttpAssertQueryProgrammer.js +3 -1
  43. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  44. package/lib/programmers/http/HttpFormDataProgrammer.js +3 -1
  45. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  46. package/lib/programmers/http/HttpHeadersProgrammer.js +3 -1
  47. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  48. package/lib/programmers/http/HttpIsFormDataProgrammer.js +3 -1
  49. package/lib/programmers/http/HttpIsFormDataProgrammer.js.map +1 -1
  50. package/lib/programmers/http/HttpIsHeadersProgrammer.js +3 -1
  51. package/lib/programmers/http/HttpIsHeadersProgrammer.js.map +1 -1
  52. package/lib/programmers/http/HttpIsQueryProgrammer.js +3 -1
  53. package/lib/programmers/http/HttpIsQueryProgrammer.js.map +1 -1
  54. package/lib/programmers/http/HttpQueryProgrammer.js +3 -1
  55. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  56. package/lib/programmers/json/JsonAssertParseProgrammer.js +3 -1
  57. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  58. package/lib/programmers/json/JsonIsParseProgrammer.js +3 -1
  59. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  60. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +3 -1
  61. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  62. package/lib/programmers/misc/MiscCloneProgrammer.js +3 -1
  63. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  64. package/lib/programmers/misc/MiscIsCloneProgrammer.js +3 -1
  65. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  66. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -1
  67. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  68. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +3 -1
  69. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  70. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +3 -1
  71. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  72. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
  73. package/lib/transformers/CallExpressionTransformer.js +104 -12
  74. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  75. package/lib/utils/StringUtil/StringUtil.d.ts +1 -0
  76. package/lib/utils/StringUtil/StringUtil.js +7 -1
  77. package/lib/utils/StringUtil/StringUtil.js.map +1 -1
  78. package/package.json +2 -1
  79. package/src/functional.ts +542 -246
  80. package/src/programmers/AssertProgrammer.ts +24 -22
  81. package/src/programmers/RandomProgrammer.ts +12 -4
  82. package/src/programmers/TypiaProgrammer.ts +1 -11
  83. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +64 -55
  84. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +13 -5
  85. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +10 -8
  86. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +45 -0
  87. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +78 -0
  88. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +91 -0
  89. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +91 -0
  90. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +212 -0
  91. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +115 -0
  92. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +12 -4
  93. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +12 -4
  94. package/src/programmers/http/HttpAssertQueryProgrammer.ts +12 -4
  95. package/src/programmers/http/HttpFormDataProgrammer.ts +12 -4
  96. package/src/programmers/http/HttpHeadersProgrammer.ts +12 -4
  97. package/src/programmers/http/HttpIsFormDataProgrammer.ts +12 -4
  98. package/src/programmers/http/HttpIsHeadersProgrammer.ts +12 -4
  99. package/src/programmers/http/HttpIsQueryProgrammer.ts +12 -4
  100. package/src/programmers/http/HttpQueryProgrammer.ts +12 -4
  101. package/src/programmers/json/JsonAssertParseProgrammer.ts +12 -4
  102. package/src/programmers/json/JsonIsParseProgrammer.ts +12 -4
  103. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +12 -4
  104. package/src/programmers/misc/MiscCloneProgrammer.ts +12 -4
  105. package/src/programmers/misc/MiscIsCloneProgrammer.ts +12 -4
  106. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +12 -4
  107. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +12 -4
  108. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -4
  109. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +1 -1
  110. package/src/transformers/CallExpressionTransformer.ts +95 -12
  111. package/src/utils/StringUtil/StringUtil.ts +5 -0
@@ -0,0 +1,212 @@
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
+
7
+ import { IProject } from "../../transformers/IProject";
8
+
9
+ import { StringUtil } from "../../utils/StringUtil";
10
+
11
+ import { ValidateProgrammer } from "../ValidateProgrammer";
12
+ import { FunctionalValidateFunctionProgrammer } from "./FunctionalValidateFunctionProgrammer";
13
+
14
+ export namespace FunctionalValidateParametersProgrammer {
15
+ export const write =
16
+ (project: IProject) =>
17
+ (modulo: ts.LeftHandSideExpression) =>
18
+ (equals: boolean) =>
19
+ (
20
+ expression: ts.Expression,
21
+ declaration: ts.FunctionDeclaration,
22
+ ): ts.ArrowFunction => {
23
+ const async: boolean = (() => {
24
+ if (declaration.type === undefined) return false;
25
+ const type: ts.Type = project.checker.getTypeFromTypeNode(
26
+ declaration.type,
27
+ );
28
+ return type.isTypeParameter() && type.symbol.name === "Promise";
29
+ })();
30
+ const caller: ts.CallExpression = ts.factory.createCallExpression(
31
+ expression,
32
+ undefined,
33
+ declaration.parameters.map((p) =>
34
+ ts.factory.createIdentifier(p.name.getText()),
35
+ ),
36
+ );
37
+ return ts.factory.createArrowFunction(
38
+ async
39
+ ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)]
40
+ : undefined,
41
+ undefined,
42
+ declaration.parameters,
43
+ declaration.type
44
+ ? ts.factory.createImportTypeNode(
45
+ ts.factory.createLiteralTypeNode(
46
+ ts.factory.createStringLiteral("typia"),
47
+ ),
48
+ undefined,
49
+ ts.factory.createIdentifier("IValidation"),
50
+ [declaration.type],
51
+ )
52
+ : undefined,
53
+ undefined,
54
+ ts.factory.createBlock(
55
+ [
56
+ ...writeStatements(project)(modulo)(equals)(declaration),
57
+ ts.factory.createReturnStatement(
58
+ ts.factory.createObjectLiteralExpression(
59
+ [
60
+ ts.factory.createPropertyAssignment(
61
+ "success",
62
+ ts.factory.createTrue(),
63
+ ),
64
+ ts.factory.createPropertyAssignment(
65
+ "data",
66
+ async ? ts.factory.createAwaitExpression(caller) : caller,
67
+ ),
68
+ ts.factory.createPropertyAssignment(
69
+ "errors",
70
+ ts.factory.createArrayLiteralExpression([]),
71
+ ),
72
+ ],
73
+ true,
74
+ ),
75
+ ),
76
+ ],
77
+ true,
78
+ ),
79
+ );
80
+ };
81
+
82
+ export const writeStatements =
83
+ (project: IProject) =>
84
+ (modulo: ts.LeftHandSideExpression) =>
85
+ (equals: boolean) =>
86
+ (declaration: ts.FunctionDeclaration): ts.Statement[] => {
87
+ const resultName: string = StringUtil.escapeDuplicate(
88
+ declaration.parameters.map((p) => p.name.getText()),
89
+ )("paramResults");
90
+ const validationResultArray: ts.ArrayLiteralExpression =
91
+ ts.factory.createArrayLiteralExpression(
92
+ declaration.parameters.map((p) =>
93
+ ts.factory.createAsExpression(
94
+ ts.factory.createCallExpression(
95
+ ValidateProgrammer.write(project)(modulo)(equals)(
96
+ project.checker.getTypeFromTypeNode(
97
+ p.type ?? TypeFactory.keyword("any"),
98
+ ),
99
+ ),
100
+ undefined,
101
+ [ts.factory.createIdentifier(p.name.getText())],
102
+ ),
103
+ ts.factory.createImportTypeNode(
104
+ ts.factory.createLiteralTypeNode(
105
+ ts.factory.createStringLiteral("typia"),
106
+ ),
107
+ undefined,
108
+ ts.factory.createQualifiedName(
109
+ ts.factory.createIdentifier("IValidation"),
110
+ ts.factory.createIdentifier("IFailure"),
111
+ ),
112
+ undefined,
113
+ false,
114
+ ),
115
+ ),
116
+ ),
117
+ true,
118
+ );
119
+ const failures = ts.factory.createCallExpression(
120
+ ts.factory.createPropertyAccessExpression(
121
+ validationResultArray,
122
+ "filter",
123
+ ),
124
+ undefined,
125
+ [
126
+ ts.factory.createArrowFunction(
127
+ undefined,
128
+ undefined,
129
+ [IdentifierFactory.parameter("r")],
130
+ undefined,
131
+ undefined,
132
+ ts.factory.createStrictEquality(
133
+ ts.factory.createFalse(),
134
+ ts.factory.createPropertyAccessExpression(
135
+ ts.factory.createIdentifier("r"),
136
+ "success",
137
+ ),
138
+ ),
139
+ ),
140
+ ],
141
+ );
142
+ const errorMatrix = ts.factory.createCallExpression(
143
+ ts.factory.createPropertyAccessExpression(
144
+ ts.factory.createIdentifier(resultName),
145
+ "map",
146
+ ),
147
+ undefined,
148
+ [
149
+ ts.factory.createArrowFunction(
150
+ undefined,
151
+ undefined,
152
+ [
153
+ IdentifierFactory.parameter("r"),
154
+ IdentifierFactory.parameter("i"),
155
+ ],
156
+ undefined,
157
+ undefined,
158
+ FunctionalValidateFunctionProgrammer.hookErrors({
159
+ expression: ts.factory.createPropertyAccessExpression(
160
+ ts.factory.createIdentifier("r"),
161
+ "errors",
162
+ ),
163
+ replacer: ts.factory.createTemplateExpression(
164
+ ts.factory.createTemplateHead("$input.parameters["),
165
+ [
166
+ ts.factory.createTemplateSpan(
167
+ ts.factory.createIdentifier("i"),
168
+ ts.factory.createTemplateTail("]"),
169
+ ),
170
+ ],
171
+ ),
172
+ }),
173
+ ),
174
+ ],
175
+ );
176
+ return [
177
+ StatementFactory.constant(resultName, failures),
178
+ ts.factory.createIfStatement(
179
+ ts.factory.createBinaryExpression(
180
+ ts.factory.createPropertyAccessExpression(
181
+ ts.factory.createIdentifier(resultName),
182
+ "length",
183
+ ),
184
+ ts.SyntaxKind.GreaterThanToken,
185
+ ts.factory.createNumericLiteral("0"),
186
+ ),
187
+ ts.factory.createReturnStatement(
188
+ ts.factory.createObjectLiteralExpression(
189
+ [
190
+ ts.factory.createPropertyAssignment(
191
+ "success",
192
+ ts.factory.createFalse(),
193
+ ),
194
+ ts.factory.createPropertyAssignment(
195
+ "errors",
196
+ ts.factory.createCallExpression(
197
+ ts.factory.createPropertyAccessExpression(
198
+ errorMatrix,
199
+ "flat",
200
+ ),
201
+ undefined,
202
+ undefined,
203
+ ),
204
+ ),
205
+ ],
206
+ true,
207
+ ),
208
+ ),
209
+ ),
210
+ ];
211
+ };
212
+ }
@@ -0,0 +1,115 @@
1
+ import ts from "typescript";
2
+
3
+ import { StatementFactory } from "../../factories/StatementFactory";
4
+ import { TypeFactory } from "../../factories/TypeFactory";
5
+
6
+ import { IProject } from "../../transformers/IProject";
7
+
8
+ import { StringUtil } from "../../utils/StringUtil";
9
+
10
+ import { ValidateProgrammer } from "../ValidateProgrammer";
11
+ import { FunctionalValidateFunctionProgrammer } from "./FunctionalValidateFunctionProgrammer";
12
+
13
+ export namespace FunctionalValidateReturnProgrammer {
14
+ export const write =
15
+ (project: IProject) =>
16
+ (modulo: ts.LeftHandSideExpression) =>
17
+ (equals: boolean) =>
18
+ (
19
+ expression: ts.Expression,
20
+ declaration: ts.FunctionDeclaration,
21
+ ): ts.ArrowFunction => {
22
+ const { async, statements } = writeStatements(project)(modulo)(equals)(
23
+ expression,
24
+ declaration,
25
+ );
26
+ return ts.factory.createArrowFunction(
27
+ async
28
+ ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)]
29
+ : undefined,
30
+ undefined,
31
+ declaration.parameters,
32
+ declaration.type
33
+ ? ts.factory.createImportTypeNode(
34
+ ts.factory.createLiteralTypeNode(
35
+ ts.factory.createStringLiteral("typia"),
36
+ ),
37
+ undefined,
38
+ ts.factory.createIdentifier("IValidation"),
39
+ [declaration.type],
40
+ )
41
+ : undefined,
42
+ undefined,
43
+ ts.factory.createBlock(statements, true),
44
+ );
45
+ };
46
+
47
+ export const writeStatements =
48
+ (project: IProject) =>
49
+ (modulo: ts.LeftHandSideExpression) =>
50
+ (equals: boolean) =>
51
+ (
52
+ expression: ts.Expression,
53
+ declaration: ts.FunctionDeclaration,
54
+ ): {
55
+ async: boolean;
56
+ statements: ts.Statement[];
57
+ } => {
58
+ const [type, async]: [ts.Type, boolean] = (() => {
59
+ const type: ts.Type = project.checker.getTypeFromTypeNode(
60
+ declaration.type ?? TypeFactory.keyword("any"),
61
+ );
62
+ return type.isTypeParameter() && type.symbol.name === "Promise"
63
+ ? [type.aliasTypeArguments![0]!, true]
64
+ : [type, false];
65
+ })();
66
+ const caller: ts.CallExpression = ts.factory.createCallExpression(
67
+ expression,
68
+ undefined,
69
+ declaration.parameters.map((p) =>
70
+ ts.factory.createIdentifier(p.name.getText()),
71
+ ),
72
+ );
73
+
74
+ const name: string = StringUtil.escapeDuplicate(
75
+ declaration.parameters.map((p) => p.name.getText()),
76
+ )("result");
77
+ const statements: ts.Statement[] = [
78
+ StatementFactory.constant(
79
+ name,
80
+ ts.factory.createCallExpression(
81
+ ValidateProgrammer.write(project)(modulo)(equals)(type),
82
+ undefined,
83
+ [async ? ts.factory.createAwaitExpression(caller) : caller],
84
+ ),
85
+ ),
86
+ ts.factory.createIfStatement(
87
+ ts.factory.createPrefixUnaryExpression(
88
+ ts.SyntaxKind.ExclamationToken,
89
+ ts.factory.createPropertyAccessExpression(
90
+ ts.factory.createIdentifier(name),
91
+ ts.factory.createIdentifier("success"),
92
+ ),
93
+ ),
94
+ ts.factory.createExpressionStatement(
95
+ ts.factory.createBinaryExpression(
96
+ ts.factory.createPropertyAccessExpression(
97
+ ts.factory.createIdentifier(name),
98
+ ts.factory.createIdentifier("errors"),
99
+ ),
100
+ ts.factory.createToken(ts.SyntaxKind.EqualsToken),
101
+ FunctionalValidateFunctionProgrammer.hookErrors({
102
+ expression: ts.factory.createPropertyAccessExpression(
103
+ ts.factory.createIdentifier(name),
104
+ ts.factory.createIdentifier("errors"),
105
+ ),
106
+ replacer: ts.factory.createStringLiteral("$input.return"),
107
+ }),
108
+ ),
109
+ ),
110
+ ),
111
+ ts.factory.createReturnStatement(ts.factory.createIdentifier("result")),
112
+ ];
113
+ return { async, statements };
114
+ };
115
+ }
@@ -24,10 +24,18 @@ export namespace HttpAssertFormDataProgrammer {
24
24
  ),
25
25
  AssertProgrammer.Guardian.parameter(init),
26
26
  ],
27
- ts.factory.createTypeReferenceNode(
28
- `typia.Resolved<${
29
- name ?? TypeFactory.getFullName(project.checker)(type)
30
- }>`,
27
+ ts.factory.createImportTypeNode(
28
+ ts.factory.createLiteralTypeNode(
29
+ ts.factory.createStringLiteral("typia"),
30
+ ),
31
+ undefined,
32
+ ts.factory.createIdentifier("Resolved"),
33
+ [
34
+ ts.factory.createTypeReferenceNode(
35
+ name ?? TypeFactory.getFullName(project.checker)(type),
36
+ ),
37
+ ],
38
+ false,
31
39
  ),
32
40
  undefined,
33
41
  ts.factory.createBlock([
@@ -26,10 +26,18 @@ export namespace HttpAssertHeadersProgrammer {
26
26
  ),
27
27
  AssertProgrammer.Guardian.parameter(init),
28
28
  ],
29
- ts.factory.createTypeReferenceNode(
30
- `typia.Resolved<${
31
- name ?? TypeFactory.getFullName(project.checker)(type)
32
- }>`,
29
+ ts.factory.createImportTypeNode(
30
+ ts.factory.createLiteralTypeNode(
31
+ ts.factory.createStringLiteral("typia"),
32
+ ),
33
+ undefined,
34
+ ts.factory.createIdentifier("Resolved"),
35
+ [
36
+ ts.factory.createTypeReferenceNode(
37
+ name ?? TypeFactory.getFullName(project.checker)(type),
38
+ ),
39
+ ],
40
+ false,
33
41
  ),
34
42
  undefined,
35
43
  ts.factory.createBlock([
@@ -24,10 +24,18 @@ export namespace HttpAssertQueryProgrammer {
24
24
  ),
25
25
  AssertProgrammer.Guardian.parameter(init),
26
26
  ],
27
- ts.factory.createTypeReferenceNode(
28
- `typia.Resolved<${
29
- name ?? TypeFactory.getFullName(project.checker)(type)
30
- }>`,
27
+ ts.factory.createImportTypeNode(
28
+ ts.factory.createLiteralTypeNode(
29
+ ts.factory.createStringLiteral("typia"),
30
+ ),
31
+ undefined,
32
+ ts.factory.createIdentifier("Resolved"),
33
+ [
34
+ ts.factory.createTypeReferenceNode(
35
+ name ?? TypeFactory.getFullName(project.checker)(type),
36
+ ),
37
+ ],
38
+ false,
31
39
  ),
32
40
  undefined,
33
41
  ts.factory.createBlock([
@@ -55,10 +55,18 @@ export namespace HttpFormDataProgrammer {
55
55
  ts.factory.createTypeReferenceNode("FormData"),
56
56
  ),
57
57
  ],
58
- ts.factory.createTypeReferenceNode(
59
- `typia.Resolved<${
60
- name ?? TypeFactory.getFullName(project.checker)(type)
61
- }>`,
58
+ ts.factory.createImportTypeNode(
59
+ ts.factory.createLiteralTypeNode(
60
+ ts.factory.createStringLiteral("typia"),
61
+ ),
62
+ undefined,
63
+ ts.factory.createIdentifier("Resolved"),
64
+ [
65
+ ts.factory.createTypeReferenceNode(
66
+ name ?? TypeFactory.getFullName(project.checker)(type),
67
+ ),
68
+ ],
69
+ false,
62
70
  ),
63
71
  undefined,
64
72
  ts.factory.createBlock(
@@ -59,10 +59,18 @@ export namespace HttpHeadersProgrammer {
59
59
  ts.factory.createTypeReferenceNode(INPUT_TYPE),
60
60
  ),
61
61
  ],
62
- ts.factory.createTypeReferenceNode(
63
- `typia.Resolved<${
64
- name ?? TypeFactory.getFullName(project.checker)(type)
65
- }>`,
62
+ ts.factory.createImportTypeNode(
63
+ ts.factory.createLiteralTypeNode(
64
+ ts.factory.createStringLiteral("typia"),
65
+ ),
66
+ undefined,
67
+ ts.factory.createIdentifier("Resolved"),
68
+ [
69
+ ts.factory.createTypeReferenceNode(
70
+ name ?? TypeFactory.getFullName(project.checker)(type),
71
+ ),
72
+ ],
73
+ false,
66
74
  ),
67
75
  undefined,
68
76
  ts.factory.createBlock(
@@ -24,10 +24,18 @@ export namespace HttpIsFormDataProgrammer {
24
24
  ),
25
25
  ],
26
26
  ts.factory.createUnionTypeNode([
27
- ts.factory.createTypeReferenceNode(
28
- `typia.Resolved<${
29
- name ?? TypeFactory.getFullName(project.checker)(type)
30
- }>`,
27
+ ts.factory.createImportTypeNode(
28
+ ts.factory.createLiteralTypeNode(
29
+ ts.factory.createStringLiteral("typia"),
30
+ ),
31
+ undefined,
32
+ ts.factory.createIdentifier("Resolved"),
33
+ [
34
+ ts.factory.createTypeReferenceNode(
35
+ name ?? TypeFactory.getFullName(project.checker)(type),
36
+ ),
37
+ ],
38
+ false,
31
39
  ),
32
40
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
33
41
  ]),
@@ -26,10 +26,18 @@ export namespace HttpIsHeadersProgrammer {
26
26
  ),
27
27
  ],
28
28
  ts.factory.createUnionTypeNode([
29
- ts.factory.createTypeReferenceNode(
30
- `typia.Resolved<${
31
- name ?? TypeFactory.getFullName(project.checker)(type)
32
- }>`,
29
+ ts.factory.createImportTypeNode(
30
+ ts.factory.createLiteralTypeNode(
31
+ ts.factory.createStringLiteral("typia"),
32
+ ),
33
+ undefined,
34
+ ts.factory.createIdentifier("Resolved"),
35
+ [
36
+ ts.factory.createTypeReferenceNode(
37
+ name ?? TypeFactory.getFullName(project.checker)(type),
38
+ ),
39
+ ],
40
+ false,
33
41
  ),
34
42
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
35
43
  ]),
@@ -24,10 +24,18 @@ export namespace HttpIsQueryProgrammer {
24
24
  ),
25
25
  ],
26
26
  ts.factory.createUnionTypeNode([
27
- ts.factory.createTypeReferenceNode(
28
- `typia.Resolved<${
29
- name ?? TypeFactory.getFullName(project.checker)(type)
30
- }>`,
27
+ ts.factory.createImportTypeNode(
28
+ ts.factory.createLiteralTypeNode(
29
+ ts.factory.createStringLiteral("typia"),
30
+ ),
31
+ undefined,
32
+ ts.factory.createIdentifier("Resolved"),
33
+ [
34
+ ts.factory.createTypeReferenceNode(
35
+ name ?? TypeFactory.getFullName(project.checker)(type),
36
+ ),
37
+ ],
38
+ false,
31
39
  ),
32
40
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
33
41
  ]),
@@ -57,10 +57,18 @@ export namespace HttpQueryProgrammer {
57
57
  ts.factory.createTypeReferenceNode(INPUT_TYPE),
58
58
  ),
59
59
  ],
60
- ts.factory.createTypeReferenceNode(
61
- `typia.Resolved<${
62
- name ?? TypeFactory.getFullName(project.checker)(type)
63
- }>`,
60
+ ts.factory.createImportTypeNode(
61
+ ts.factory.createLiteralTypeNode(
62
+ ts.factory.createStringLiteral("typia"),
63
+ ),
64
+ undefined,
65
+ ts.factory.createIdentifier("Resolved"),
66
+ [
67
+ ts.factory.createTypeReferenceNode(
68
+ name ?? TypeFactory.getFullName(project.checker)(type),
69
+ ),
70
+ ],
71
+ false,
64
72
  ),
65
73
  undefined,
66
74
  ts.factory.createBlock(
@@ -25,10 +25,18 @@ export namespace JsonAssertParseProgrammer {
25
25
  IdentifierFactory.parameter("input", TypeFactory.keyword("string")),
26
26
  AssertProgrammer.Guardian.parameter(init),
27
27
  ],
28
- ts.factory.createTypeReferenceNode(
29
- `typia.Primitive<${
30
- name ?? TypeFactory.getFullName(project.checker)(type)
31
- }>`,
28
+ ts.factory.createImportTypeNode(
29
+ ts.factory.createLiteralTypeNode(
30
+ ts.factory.createStringLiteral("typia"),
31
+ ),
32
+ undefined,
33
+ ts.factory.createIdentifier("Primitive"),
34
+ [
35
+ ts.factory.createTypeReferenceNode(
36
+ name ?? TypeFactory.getFullName(project.checker)(type),
37
+ ),
38
+ ],
39
+ false,
32
40
  ),
33
41
  undefined,
34
42
  ts.factory.createBlock([
@@ -22,10 +22,18 @@ export namespace JsonIsParseProgrammer {
22
22
  undefined,
23
23
  undefined,
24
24
  [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
25
- ts.factory.createTypeReferenceNode(
26
- `typia.Primitive<${
27
- name ?? TypeFactory.getFullName(project.checker)(type)
28
- }>`,
25
+ ts.factory.createImportTypeNode(
26
+ ts.factory.createLiteralTypeNode(
27
+ ts.factory.createStringLiteral("typia"),
28
+ ),
29
+ undefined,
30
+ ts.factory.createIdentifier("Primitive"),
31
+ [
32
+ ts.factory.createTypeReferenceNode(
33
+ name ?? TypeFactory.getFullName(project.checker)(type),
34
+ ),
35
+ ],
36
+ false,
29
37
  ),
30
38
  undefined,
31
39
  ts.factory.createBlock([
@@ -21,10 +21,18 @@ export namespace MiscAssertCloneProgrammer {
21
21
  IdentifierFactory.parameter("input", TypeFactory.keyword("any")),
22
22
  AssertProgrammer.Guardian.parameter(init),
23
23
  ],
24
- ts.factory.createTypeReferenceNode(
25
- `typia.Resolved<${
26
- name ?? TypeFactory.getFullName(project.checker)(type)
27
- }>`,
24
+ ts.factory.createImportTypeNode(
25
+ ts.factory.createLiteralTypeNode(
26
+ ts.factory.createStringLiteral("typia"),
27
+ ),
28
+ undefined,
29
+ ts.factory.createIdentifier("Resolved"),
30
+ [
31
+ ts.factory.createTypeReferenceNode(
32
+ name ?? TypeFactory.getFullName(project.checker)(type),
33
+ ),
34
+ ],
35
+ false,
28
36
  ),
29
37
  undefined,
30
38
  ts.factory.createBlock([
@@ -631,10 +631,18 @@ export namespace MiscCloneProgrammer {
631
631
  name ?? TypeFactory.getFullName(project.checker)(type),
632
632
  ),
633
633
  output: (type, name) =>
634
- ts.factory.createTypeReferenceNode(
635
- `typia.Resolved<${
636
- name ?? TypeFactory.getFullName(project.checker)(type)
637
- }>`,
634
+ ts.factory.createImportTypeNode(
635
+ ts.factory.createLiteralTypeNode(
636
+ ts.factory.createStringLiteral("typia"),
637
+ ),
638
+ undefined,
639
+ ts.factory.createIdentifier("Resolved"),
640
+ [
641
+ ts.factory.createTypeReferenceNode(
642
+ name ?? TypeFactory.getFullName(project.checker)(type),
643
+ ),
644
+ ],
645
+ false,
638
646
  ),
639
647
  },
640
648
  prefix: PREFIX,
@@ -19,10 +19,18 @@ export namespace MiscIsCloneProgrammer {
19
19
  undefined,
20
20
  [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
21
21
  ts.factory.createUnionTypeNode([
22
- ts.factory.createTypeReferenceNode(
23
- `typia.Resolved<${
24
- name ?? TypeFactory.getFullName(project.checker)(type)
25
- }>`,
22
+ ts.factory.createImportTypeNode(
23
+ ts.factory.createLiteralTypeNode(
24
+ ts.factory.createStringLiteral("typia"),
25
+ ),
26
+ undefined,
27
+ ts.factory.createIdentifier("Resolved"),
28
+ [
29
+ ts.factory.createTypeReferenceNode(
30
+ name ?? TypeFactory.getFullName(project.checker)(type),
31
+ ),
32
+ ],
33
+ false,
26
34
  ),
27
35
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
28
36
  ]),