typia 3.6.0 → 3.6.1
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.
- package/README.md +14 -9
- package/lib/programmers/AssertCloneProgrammer.d.ts +1 -1
- package/lib/programmers/AssertCloneProgrammer.js +2 -2
- package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
- package/lib/programmers/AssertParseProgrammer.d.ts +1 -1
- package/lib/programmers/AssertParseProgrammer.js +2 -2
- package/lib/programmers/AssertParseProgrammer.js.map +1 -1
- package/lib/programmers/AssertProgrammer.d.ts +1 -1
- package/lib/programmers/AssertProgrammer.js +2 -2
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/AssertPruneProgrammer.d.ts +1 -1
- package/lib/programmers/AssertPruneProgrammer.js +2 -2
- package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.d.ts +1 -1
- package/lib/programmers/CheckerProgrammer.js +2 -2
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/CloneProgrammer.d.ts +1 -1
- package/lib/programmers/CloneProgrammer.js +4 -4
- package/lib/programmers/CloneProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +3 -3
- package/lib/programmers/FeatureProgrammer.js +2 -2
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsCloneProgrammer.d.ts +1 -1
- package/lib/programmers/IsCloneProgrammer.js +2 -2
- package/lib/programmers/IsCloneProgrammer.js.map +1 -1
- package/lib/programmers/IsParseProgrammer.d.ts +1 -1
- package/lib/programmers/IsParseProgrammer.js +2 -2
- package/lib/programmers/IsParseProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.d.ts +1 -1
- package/lib/programmers/IsPruneProgrammer.d.ts +1 -1
- package/lib/programmers/IsPruneProgrammer.js +2 -2
- package/lib/programmers/IsPruneProgrammer.js.map +1 -1
- package/lib/programmers/IsStringifyProgrammer.d.ts +1 -1
- package/lib/programmers/IsStringifyProgrammer.js +2 -2
- package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
- package/lib/programmers/PruneProgrammer.d.ts +1 -1
- package/lib/programmers/PruneProgrammer.js +2 -2
- package/lib/programmers/PruneProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.d.ts +1 -1
- package/lib/programmers/RandomProgrammer.js +2 -2
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/StringifyProgrammer.d.ts +1 -1
- package/lib/programmers/StringifyProgrammer.js +2 -2
- package/lib/programmers/StringifyProgrammer.js.map +1 -1
- package/lib/programmers/ValidateCloneProgrammer.d.ts +1 -1
- package/lib/programmers/ValidateCloneProgrammer.js +2 -2
- package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
- package/lib/programmers/ValidateParseProgrammer.d.ts +1 -1
- package/lib/programmers/ValidateParseProgrammer.js +2 -2
- package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.d.ts +1 -1
- package/lib/programmers/ValidateProgrammer.js +2 -2
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/ValidatePruneProgrammer.d.ts +1 -1
- package/lib/programmers/ValidatePruneProgrammer.js +2 -2
- package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
- package/lib/programmers/ValidateStringifyProgrammer.d.ts +1 -1
- package/lib/programmers/ValidateStringifyProgrammer.js +2 -2
- package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/AssertCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js +2 -15
- package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/AssertPruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js +2 -15
- package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CloneTransformer.js +2 -26
- package/lib/transformers/features/miscellaneous/CloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreatePruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateRandomGenerator.js +4 -2
- package/lib/transformers/features/miscellaneous/CreateRandomGenerator.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js +2 -10
- package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/IsCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/IsCloneTransformer.js +2 -15
- package/lib/transformers/features/miscellaneous/IsCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/IsPruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/IsPruneTransformer.js +2 -15
- package/lib/transformers/features/miscellaneous/IsPruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/PruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/PruneTransformer.js +2 -26
- package/lib/transformers/features/miscellaneous/PruneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/RandomTransformer.js +4 -2
- package/lib/transformers/features/miscellaneous/RandomTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js +2 -15
- package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.d.ts +1 -3
- package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js +2 -15
- package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js.map +1 -1
- package/lib/transformers/features/parsers/AssertParseTransformer.d.ts +1 -3
- package/lib/transformers/features/parsers/AssertParseTransformer.js +2 -14
- package/lib/transformers/features/parsers/AssertParseTransformer.js.map +1 -1
- package/lib/transformers/features/parsers/CreateAssertParseTransformer.d.ts +1 -3
- package/lib/transformers/features/parsers/CreateAssertParseTransformer.js +2 -10
- package/lib/transformers/features/parsers/CreateAssertParseTransformer.js.map +1 -1
- package/lib/transformers/features/parsers/CreateIsParseTransformer.d.ts +1 -3
- package/lib/transformers/features/parsers/CreateIsParseTransformer.js +2 -10
- package/lib/transformers/features/parsers/CreateIsParseTransformer.js.map +1 -1
- package/lib/transformers/features/parsers/CreateValidateParseTransformer.d.ts +1 -3
- package/lib/transformers/features/parsers/CreateValidateParseTransformer.js +2 -10
- package/lib/transformers/features/parsers/CreateValidateParseTransformer.js.map +1 -1
- package/lib/transformers/features/parsers/IsParseTransformer.d.ts +1 -3
- package/lib/transformers/features/parsers/IsParseTransformer.js +2 -14
- package/lib/transformers/features/parsers/IsParseTransformer.js.map +1 -1
- package/lib/transformers/features/parsers/ValidateParseTransformer.d.ts +1 -3
- package/lib/transformers/features/parsers/ValidateParseTransformer.js +2 -14
- package/lib/transformers/features/parsers/ValidateParseTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/AssertStringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js +4 -15
- package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js +2 -10
- package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js +2 -10
- package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/CreateStringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js +2 -10
- package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js +4 -10
- package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js.map +1 -1
- package/lib/transformers/features/stringifiers/IsStringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/IsStringifyTransformer.js +2 -15
- package/lib/transformers/features/stringifiers/IsStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/StringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/StringifyTransformer.js +2 -26
- package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.d.ts +1 -3
- package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js +4 -15
- package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/validators/AssertTransformer.d.ts +1 -3
- package/lib/transformers/features/validators/AssertTransformer.js +6 -22
- package/lib/transformers/features/validators/AssertTransformer.js.map +1 -1
- package/lib/transformers/features/validators/CreateAssertTransformer.d.ts +1 -3
- package/lib/transformers/features/validators/CreateAssertTransformer.js +6 -17
- package/lib/transformers/features/validators/CreateAssertTransformer.js.map +1 -1
- package/lib/transformers/features/validators/CreateIsTransformer.d.ts +1 -3
- package/lib/transformers/features/validators/CreateIsTransformer.js +4 -17
- package/lib/transformers/features/validators/CreateIsTransformer.js.map +1 -1
- package/lib/transformers/features/validators/CreateValidateTransformer.d.ts +1 -3
- package/lib/transformers/features/validators/CreateValidateTransformer.js +6 -17
- package/lib/transformers/features/validators/CreateValidateTransformer.js.map +1 -1
- package/lib/transformers/features/validators/IsTransformer.d.ts +1 -3
- package/lib/transformers/features/validators/IsTransformer.js +6 -22
- package/lib/transformers/features/validators/IsTransformer.js.map +1 -1
- package/lib/transformers/features/validators/ValidateTransformer.d.ts +1 -3
- package/lib/transformers/features/validators/ValidateTransformer.js +6 -22
- package/lib/transformers/features/validators/ValidateTransformer.js.map +1 -1
- package/lib/transformers/internal/GenericTransformer.d.ts +7 -0
- package/lib/transformers/internal/GenericTransformer.js +68 -0
- package/lib/transformers/internal/GenericTransformer.js.map +1 -0
- package/package.json +1 -1
- package/src/programmers/AssertCloneProgrammer.ts +4 -5
- package/src/programmers/AssertParseProgrammer.ts +4 -5
- package/src/programmers/AssertProgrammer.ts +2 -2
- package/src/programmers/AssertPruneProgrammer.ts +2 -2
- package/src/programmers/CheckerProgrammer.ts +3 -2
- package/src/programmers/CloneProgrammer.ts +6 -7
- package/src/programmers/FeatureProgrammer.ts +5 -5
- package/src/programmers/IsCloneProgrammer.ts +5 -5
- package/src/programmers/IsParseProgrammer.ts +4 -5
- package/src/programmers/IsPruneProgrammer.ts +2 -2
- package/src/programmers/IsStringifyProgrammer.ts +3 -2
- package/src/programmers/PruneProgrammer.ts +2 -2
- package/src/programmers/RandomProgrammer.ts +4 -5
- package/src/programmers/StringifyProgrammer.ts +2 -2
- package/src/programmers/ValidateCloneProgrammer.ts +4 -5
- package/src/programmers/ValidateParseProgrammer.ts +4 -5
- package/src/programmers/ValidateProgrammer.ts +4 -5
- package/src/programmers/ValidatePruneProgrammer.ts +4 -5
- package/src/programmers/ValidateStringifyProgrammer.ts +3 -2
- package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +4 -33
- package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +4 -33
- package/src/transformers/features/miscellaneous/CloneTransformer.ts +4 -41
- package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +4 -27
- package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +4 -27
- package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +4 -26
- package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +4 -27
- package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +4 -27
- package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +4 -26
- package/src/transformers/features/miscellaneous/CreateRandomGenerator.ts +8 -4
- package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +4 -27
- package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +4 -27
- package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +4 -33
- package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +4 -33
- package/src/transformers/features/miscellaneous/PruneTransformer.ts +4 -41
- package/src/transformers/features/miscellaneous/RandomTransformer.ts +8 -4
- package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +4 -33
- package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +4 -33
- package/src/transformers/features/parsers/AssertParseTransformer.ts +4 -31
- package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +4 -27
- package/src/transformers/features/parsers/CreateIsParseTransformer.ts +4 -27
- package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +4 -27
- package/src/transformers/features/parsers/IsParseTransformer.ts +4 -31
- package/src/transformers/features/parsers/ValidateParseTransformer.ts +4 -31
- package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +5 -33
- package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +4 -27
- package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +4 -27
- package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +4 -26
- package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +6 -27
- package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +4 -33
- package/src/transformers/features/stringifiers/StringifyTransformer.ts +4 -41
- package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +5 -33
- package/src/transformers/features/validators/AssertTransformer.ts +6 -38
- package/src/transformers/features/validators/CreateAssertTransformer.ts +7 -30
- package/src/transformers/features/validators/CreateIsTransformer.ts +5 -30
- package/src/transformers/features/validators/CreateValidateTransformer.ts +7 -30
- package/src/transformers/features/validators/IsTransformer.ts +5 -38
- package/src/transformers/features/validators/ValidateTransformer.ts +6 -38
- package/src/transformers/internal/GenericTransformer.ts +98 -0
|
@@ -312,16 +312,15 @@ export namespace CloneProgrammer {
|
|
|
312
312
|
importer: FunctionImporter,
|
|
313
313
|
): FeatureProgrammer.IConfig => ({
|
|
314
314
|
types: {
|
|
315
|
-
input: (type) =>
|
|
315
|
+
input: (type, name) =>
|
|
316
316
|
ts.factory.createTypeReferenceNode(
|
|
317
|
-
TypeFactory.getFullName(project.checker, type),
|
|
317
|
+
name ?? TypeFactory.getFullName(project.checker, type),
|
|
318
318
|
),
|
|
319
|
-
output: (type) =>
|
|
319
|
+
output: (type, name) =>
|
|
320
320
|
ts.factory.createTypeReferenceNode(
|
|
321
|
-
`typia.Primitive<${
|
|
322
|
-
project.checker,
|
|
323
|
-
|
|
324
|
-
)}>`,
|
|
321
|
+
`typia.Primitive<${
|
|
322
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
323
|
+
}>`,
|
|
325
324
|
),
|
|
326
325
|
},
|
|
327
326
|
functors: FUNCTORS,
|
|
@@ -70,8 +70,8 @@ export namespace FeatureProgrammer {
|
|
|
70
70
|
}
|
|
71
71
|
export namespace IConfig {
|
|
72
72
|
export interface ITypes {
|
|
73
|
-
input: (type: ts.Type,
|
|
74
|
-
output: (type: ts.Type,
|
|
73
|
+
input: (type: ts.Type, name?: string) => ts.TypeNode;
|
|
74
|
+
output: (type: ts.Type, name?: string) => ts.TypeNode;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
export interface IObjector {
|
|
@@ -227,7 +227,7 @@ export namespace FeatureProgrammer {
|
|
|
227
227
|
collection: MetadataCollection,
|
|
228
228
|
) => ts.Statement[] | undefined,
|
|
229
229
|
) =>
|
|
230
|
-
(type: ts.Type,
|
|
230
|
+
(type: ts.Type, name?: string) => {
|
|
231
231
|
const [collection, meta] = config.initializer(project, type);
|
|
232
232
|
|
|
233
233
|
// ITERATE OVER ALL METADATA
|
|
@@ -257,10 +257,10 @@ export namespace FeatureProgrammer {
|
|
|
257
257
|
return ts.factory.createArrowFunction(
|
|
258
258
|
undefined,
|
|
259
259
|
undefined,
|
|
260
|
-
PARAMETERS(config)(config.types.input(type,
|
|
260
|
+
PARAMETERS(config)(config.types.input(type, name))(
|
|
261
261
|
ValueFactory.INPUT(),
|
|
262
262
|
),
|
|
263
|
-
config.types.output(type,
|
|
263
|
+
config.types.output(type, name),
|
|
264
264
|
undefined,
|
|
265
265
|
ts.factory.createBlock(
|
|
266
266
|
[
|
|
@@ -12,7 +12,7 @@ import { IsProgrammer } from "./IsProgrammer";
|
|
|
12
12
|
export namespace IsCloneProgrammer {
|
|
13
13
|
export const generate =
|
|
14
14
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type) =>
|
|
15
|
+
(type: ts.Type, name?: string) =>
|
|
16
16
|
ts.factory.createArrowFunction(
|
|
17
17
|
undefined,
|
|
18
18
|
undefined,
|
|
@@ -24,10 +24,10 @@ export namespace IsCloneProgrammer {
|
|
|
24
24
|
],
|
|
25
25
|
ts.factory.createUnionTypeNode([
|
|
26
26
|
ts.factory.createTypeReferenceNode(
|
|
27
|
-
`typia.Primitive<${
|
|
28
|
-
|
|
29
|
-
type
|
|
30
|
-
|
|
27
|
+
`typia.Primitive<${
|
|
28
|
+
name ??
|
|
29
|
+
TypeFactory.getFullName(project.checker, type)
|
|
30
|
+
}>`,
|
|
31
31
|
),
|
|
32
32
|
ts.factory.createLiteralTypeNode(ts.factory.createNull()),
|
|
33
33
|
]),
|
|
@@ -11,7 +11,7 @@ import { IsProgrammer } from "./IsProgrammer";
|
|
|
11
11
|
export namespace IsParseProgrammer {
|
|
12
12
|
export const generate =
|
|
13
13
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
14
|
-
(type: ts.Type) =>
|
|
14
|
+
(type: ts.Type, name?: string) =>
|
|
15
15
|
ts.factory.createArrowFunction(
|
|
16
16
|
undefined,
|
|
17
17
|
undefined,
|
|
@@ -22,10 +22,9 @@ export namespace IsParseProgrammer {
|
|
|
22
22
|
),
|
|
23
23
|
],
|
|
24
24
|
ts.factory.createTypeReferenceNode(
|
|
25
|
-
`typia.Primitive<${
|
|
26
|
-
project.checker,
|
|
27
|
-
|
|
28
|
-
)}>`,
|
|
25
|
+
`typia.Primitive<${
|
|
26
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
27
|
+
}>`,
|
|
29
28
|
),
|
|
30
29
|
undefined,
|
|
31
30
|
ts.factory.createBlock([
|
|
@@ -12,7 +12,7 @@ import { PruneProgrammer } from "./PruneProgrammer";
|
|
|
12
12
|
export namespace IsPruneProgrammer {
|
|
13
13
|
export const generate =
|
|
14
14
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type) =>
|
|
15
|
+
(type: ts.Type, name?: string) =>
|
|
16
16
|
ts.factory.createArrowFunction(
|
|
17
17
|
undefined,
|
|
18
18
|
undefined,
|
|
@@ -26,7 +26,7 @@ export namespace IsPruneProgrammer {
|
|
|
26
26
|
undefined,
|
|
27
27
|
"input",
|
|
28
28
|
ts.factory.createTypeReferenceNode(
|
|
29
|
-
TypeFactory.getFullName(project.checker, type),
|
|
29
|
+
name ?? TypeFactory.getFullName(project.checker, type),
|
|
30
30
|
),
|
|
31
31
|
),
|
|
32
32
|
undefined,
|
|
@@ -12,7 +12,7 @@ import { StringifyProgrammer } from "./StringifyProgrammer";
|
|
|
12
12
|
export namespace IsStringifyProgrammer {
|
|
13
13
|
export const generate =
|
|
14
14
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type) =>
|
|
15
|
+
(type: ts.Type, name?: string) =>
|
|
16
16
|
ts.factory.createArrowFunction(
|
|
17
17
|
undefined,
|
|
18
18
|
undefined,
|
|
@@ -20,7 +20,8 @@ export namespace IsStringifyProgrammer {
|
|
|
20
20
|
IdentifierFactory.parameter(
|
|
21
21
|
"input",
|
|
22
22
|
ts.factory.createTypeReferenceNode(
|
|
23
|
-
|
|
23
|
+
name ??
|
|
24
|
+
TypeFactory.getFullName(project.checker, type),
|
|
24
25
|
),
|
|
25
26
|
),
|
|
26
27
|
],
|
|
@@ -272,9 +272,9 @@ export namespace PruneProgrammer {
|
|
|
272
272
|
importer: FunctionImporter,
|
|
273
273
|
): FeatureProgrammer.IConfig => ({
|
|
274
274
|
types: {
|
|
275
|
-
input: (type) =>
|
|
275
|
+
input: (type, name) =>
|
|
276
276
|
ts.factory.createTypeReferenceNode(
|
|
277
|
-
TypeFactory.getFullName(project.checker, type),
|
|
277
|
+
name ?? TypeFactory.getFullName(project.checker, type),
|
|
278
278
|
),
|
|
279
279
|
output: () => TypeFactory.keyword("void"),
|
|
280
280
|
},
|
|
@@ -23,7 +23,7 @@ export namespace RandomProgrammer {
|
|
|
23
23
|
modulo: ts.LeftHandSideExpression,
|
|
24
24
|
) {
|
|
25
25
|
const importer: FunctionImporter = new FunctionImporter();
|
|
26
|
-
return (type: ts.Type) => {
|
|
26
|
+
return (type: ts.Type, name?: string) => {
|
|
27
27
|
// INITIALIZE METADATA
|
|
28
28
|
const collection: MetadataCollection = new MetadataCollection();
|
|
29
29
|
const meta: Metadata = MetadataFactory.generate(
|
|
@@ -65,10 +65,9 @@ export namespace RandomProgrammer {
|
|
|
65
65
|
),
|
|
66
66
|
],
|
|
67
67
|
ts.factory.createTypeReferenceNode(
|
|
68
|
-
`typia.Primitive<${
|
|
69
|
-
project.checker,
|
|
70
|
-
|
|
71
|
-
)}>`,
|
|
68
|
+
`typia.Primitive<${
|
|
69
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
70
|
+
}>`,
|
|
72
71
|
),
|
|
73
72
|
undefined,
|
|
74
73
|
ts.factory.createBlock(
|
|
@@ -708,9 +708,9 @@ export namespace StringifyProgrammer {
|
|
|
708
708
|
importer: FunctionImporter,
|
|
709
709
|
): FeatureProgrammer.IConfig => ({
|
|
710
710
|
types: {
|
|
711
|
-
input: (type) =>
|
|
711
|
+
input: (type, name) =>
|
|
712
712
|
ts.factory.createTypeReferenceNode(
|
|
713
|
-
TypeFactory.getFullName(project.checker, type),
|
|
713
|
+
name ?? TypeFactory.getFullName(project.checker, type),
|
|
714
714
|
),
|
|
715
715
|
output: () => TypeFactory.keyword("string"),
|
|
716
716
|
},
|
|
@@ -12,7 +12,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
|
|
|
12
12
|
export namespace ValidateCloneProgrammer {
|
|
13
13
|
export const generate =
|
|
14
14
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type) =>
|
|
15
|
+
(type: ts.Type, name?: string) =>
|
|
16
16
|
ts.factory.createArrowFunction(
|
|
17
17
|
undefined,
|
|
18
18
|
undefined,
|
|
@@ -23,10 +23,9 @@ export namespace ValidateCloneProgrammer {
|
|
|
23
23
|
),
|
|
24
24
|
],
|
|
25
25
|
ts.factory.createTypeReferenceNode(
|
|
26
|
-
`typia.IValidation<typia.Primitive<${
|
|
27
|
-
project.checker,
|
|
28
|
-
|
|
29
|
-
)}>>`,
|
|
26
|
+
`typia.IValidation<typia.Primitive<${
|
|
27
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
28
|
+
}>>`,
|
|
30
29
|
),
|
|
31
30
|
undefined,
|
|
32
31
|
ts.factory.createBlock([
|
|
@@ -11,7 +11,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
|
|
|
11
11
|
export namespace ValidateParseProgrammer {
|
|
12
12
|
export const generate =
|
|
13
13
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
14
|
-
(type: ts.Type) =>
|
|
14
|
+
(type: ts.Type, name?: string) =>
|
|
15
15
|
ts.factory.createArrowFunction(
|
|
16
16
|
undefined,
|
|
17
17
|
undefined,
|
|
@@ -22,10 +22,9 @@ export namespace ValidateParseProgrammer {
|
|
|
22
22
|
),
|
|
23
23
|
],
|
|
24
24
|
ts.factory.createTypeReferenceNode(
|
|
25
|
-
`typia.IValidation<typia.Primitive<${
|
|
26
|
-
project.checker,
|
|
27
|
-
|
|
28
|
-
)}>>`,
|
|
25
|
+
`typia.IValidation<typia.Primitive<${
|
|
26
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
27
|
+
}>>`,
|
|
29
28
|
),
|
|
30
29
|
undefined,
|
|
31
30
|
ts.factory.createBlock([
|
|
@@ -20,7 +20,7 @@ export namespace ValidateProgrammer {
|
|
|
20
20
|
modulo: ts.LeftHandSideExpression,
|
|
21
21
|
equals: boolean = false,
|
|
22
22
|
) =>
|
|
23
|
-
(type: ts.Type) => {
|
|
23
|
+
(type: ts.Type, name?: string) => {
|
|
24
24
|
const importer: FunctionImporter = new FunctionImporter();
|
|
25
25
|
const program: ts.ArrowFunction = CheckerProgrammer.generate(
|
|
26
26
|
project,
|
|
@@ -48,10 +48,9 @@ export namespace ValidateProgrammer {
|
|
|
48
48
|
),
|
|
49
49
|
],
|
|
50
50
|
ts.factory.createTypeReferenceNode(
|
|
51
|
-
`typia.IValidation<${
|
|
52
|
-
project.checker,
|
|
53
|
-
|
|
54
|
-
)}>`,
|
|
51
|
+
`typia.IValidation<${
|
|
52
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
53
|
+
}>`,
|
|
55
54
|
),
|
|
56
55
|
undefined,
|
|
57
56
|
ts.factory.createBlock(
|
|
@@ -12,7 +12,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
|
|
|
12
12
|
export namespace ValidatePruneProgrammer {
|
|
13
13
|
export const generate =
|
|
14
14
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type) =>
|
|
15
|
+
(type: ts.Type, name?: string) =>
|
|
16
16
|
ts.factory.createArrowFunction(
|
|
17
17
|
undefined,
|
|
18
18
|
undefined,
|
|
@@ -23,10 +23,9 @@ export namespace ValidatePruneProgrammer {
|
|
|
23
23
|
),
|
|
24
24
|
],
|
|
25
25
|
ts.factory.createTypeReferenceNode(
|
|
26
|
-
`typia.IValidation<${
|
|
27
|
-
project.checker,
|
|
28
|
-
|
|
29
|
-
)}>`,
|
|
26
|
+
`typia.IValidation<${
|
|
27
|
+
name ?? TypeFactory.getFullName(project.checker, type)
|
|
28
|
+
}>`,
|
|
30
29
|
),
|
|
31
30
|
undefined,
|
|
32
31
|
ts.factory.createBlock([
|
|
@@ -12,7 +12,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
|
|
|
12
12
|
export namespace ValidateStringifyProgrammer {
|
|
13
13
|
export const generate =
|
|
14
14
|
(project: IProject, modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type) =>
|
|
15
|
+
(type: ts.Type, name?: string) =>
|
|
16
16
|
ts.factory.createArrowFunction(
|
|
17
17
|
undefined,
|
|
18
18
|
undefined,
|
|
@@ -20,7 +20,8 @@ export namespace ValidateStringifyProgrammer {
|
|
|
20
20
|
IdentifierFactory.parameter(
|
|
21
21
|
"input",
|
|
22
22
|
ts.factory.createTypeReferenceNode(
|
|
23
|
-
|
|
23
|
+
name ??
|
|
24
|
+
TypeFactory.getFullName(project.checker, type),
|
|
24
25
|
),
|
|
25
26
|
),
|
|
26
27
|
],
|
|
@@ -1,38 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace AssertCloneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
if (expression.arguments.length !== 1)
|
|
14
|
-
throw new Error(ErrorMessages.NO_INPUT_VALUE);
|
|
15
|
-
|
|
16
|
-
// GET TYPE INFO
|
|
17
|
-
const type: ts.Type =
|
|
18
|
-
expression.typeArguments && expression.typeArguments[0]
|
|
19
|
-
? project.checker.getTypeFromTypeNode(
|
|
20
|
-
expression.typeArguments[0],
|
|
21
|
-
)
|
|
22
|
-
: project.checker.getTypeAtLocation(expression.arguments[0]!);
|
|
23
|
-
if (type.isTypeParameter())
|
|
24
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
25
|
-
|
|
26
|
-
// DO TRANSFORM
|
|
27
|
-
return ts.factory.createCallExpression(
|
|
28
|
-
AssertCloneProgrammer.generate(project, modulo)(type),
|
|
29
|
-
undefined,
|
|
30
|
-
[expression.arguments[0]!],
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const enum ErrorMessages {
|
|
36
|
-
NO_INPUT_VALUE = "Error on typia.assertClone(): no input value.",
|
|
37
|
-
GENERIC_ARGUMENT = "Error on typia.assertClone(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.scalar("assertClone")(
|
|
7
|
+
(project, modulo) => AssertCloneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
38
9
|
}
|
|
@@ -1,38 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace AssertPruneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
if (expression.arguments.length !== 1)
|
|
14
|
-
throw new Error(ErrorMessages.NO_INPUT_VALUE);
|
|
15
|
-
|
|
16
|
-
// GET TYPE INFO
|
|
17
|
-
const type: ts.Type =
|
|
18
|
-
expression.typeArguments && expression.typeArguments[0]
|
|
19
|
-
? project.checker.getTypeFromTypeNode(
|
|
20
|
-
expression.typeArguments[0],
|
|
21
|
-
)
|
|
22
|
-
: project.checker.getTypeAtLocation(expression.arguments[0]!);
|
|
23
|
-
if (type.isTypeParameter())
|
|
24
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
25
|
-
|
|
26
|
-
// DO TRANSFORM
|
|
27
|
-
return ts.factory.createCallExpression(
|
|
28
|
-
AssertPruneProgrammer.generate(project, modulo)(type),
|
|
29
|
-
undefined,
|
|
30
|
-
[expression.arguments[0]!],
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const enum ErrorMessages {
|
|
36
|
-
NO_INPUT_VALUE = "Error on typia.assertPrune(): no input value.",
|
|
37
|
-
GENERIC_ARGUMENT = "Error on typia.assertPrune(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.scalar("assertPrune")(
|
|
7
|
+
(project, modulo) => AssertPruneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
38
9
|
}
|
|
@@ -1,46 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace CloneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
if (expression.arguments.length !== 1)
|
|
14
|
-
throw new Error(ErrorMessages.NO_INPUT_VALUE);
|
|
15
|
-
|
|
16
|
-
const type: ts.Type =
|
|
17
|
-
expression.typeArguments && expression.typeArguments[0]
|
|
18
|
-
? project.checker.getTypeFromTypeNode(
|
|
19
|
-
expression.typeArguments[0],
|
|
20
|
-
)
|
|
21
|
-
: project.checker.getTypeAtLocation(expression.arguments[0]!);
|
|
22
|
-
if (type.isTypeParameter())
|
|
23
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
24
|
-
|
|
25
|
-
return ts.factory.createCallExpression(
|
|
26
|
-
CloneProgrammer.generate(
|
|
27
|
-
{
|
|
28
|
-
...project,
|
|
29
|
-
options: {
|
|
30
|
-
...project.options,
|
|
31
|
-
functional: false,
|
|
32
|
-
numeric: false,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
modulo,
|
|
36
|
-
)(type),
|
|
37
|
-
undefined,
|
|
38
|
-
[expression.arguments[0]!],
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const enum ErrorMessages {
|
|
44
|
-
NO_INPUT_VALUE = "Error on typia.clone(): no input value.",
|
|
45
|
-
GENERIC_ARGUMENT = "Error on typia.clone(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.scalar("clone")(
|
|
7
|
+
(project, modulo) => CloneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
46
9
|
}
|
|
@@ -1,32 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace CreateAssertCloneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
14
|
-
if (!expression.typeArguments?.[0])
|
|
15
|
-
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
16
|
-
|
|
17
|
-
// GET TYPE INFO
|
|
18
|
-
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
19
|
-
expression.typeArguments[0],
|
|
20
|
-
);
|
|
21
|
-
if (type.isTypeParameter())
|
|
22
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
23
|
-
|
|
24
|
-
// DO TRANSFORM
|
|
25
|
-
return AssertCloneProgrammer.generate(project, modulo)(type);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const enum ErrorMessages {
|
|
30
|
-
NOT_SPECIFIED = "Error on typia.assertClone(): generic argument is not specified.",
|
|
31
|
-
GENERIC_ARGUMENT = "Error on typia.assertClone(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.factory("createAssertClone")(
|
|
7
|
+
(project, modulo) => AssertCloneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
32
9
|
}
|
|
@@ -1,32 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace CreateAssertPruneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
14
|
-
if (!expression.typeArguments?.[0])
|
|
15
|
-
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
16
|
-
|
|
17
|
-
// GET TYPE INFO
|
|
18
|
-
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
19
|
-
expression.typeArguments[0],
|
|
20
|
-
);
|
|
21
|
-
if (type.isTypeParameter())
|
|
22
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
23
|
-
|
|
24
|
-
// DO TRANSFORM
|
|
25
|
-
return AssertPruneProgrammer.generate(project, modulo)(type);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const enum ErrorMessages {
|
|
30
|
-
NOT_SPECIFIED = "Error on typia.assertPrune(): generic argument is not specified.",
|
|
31
|
-
GENERIC_ARGUMENT = "Error on typia.assertPrune(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.factory("createAssertPrune")(
|
|
7
|
+
(project, modulo) => AssertPruneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
32
9
|
}
|
|
@@ -1,31 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace CreateCloneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
14
|
-
if (!expression.typeArguments?.[0])
|
|
15
|
-
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
16
|
-
|
|
17
|
-
// GET TYPE INFO
|
|
18
|
-
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
19
|
-
expression.typeArguments[0],
|
|
20
|
-
);
|
|
21
|
-
if (type.isTypeParameter())
|
|
22
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
23
|
-
|
|
24
|
-
return CloneProgrammer.generate(project, modulo)(type);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const enum ErrorMessages {
|
|
29
|
-
NOT_SPECIFIED = "Error on typia.clone(): generic argument is not specified.",
|
|
30
|
-
GENERIC_ARGUMENT = "Error on typia.clone(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.factory("createClone")(
|
|
7
|
+
(project, modulo) => CloneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
31
9
|
}
|
|
@@ -1,32 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { IsCloneProgrammer } from "../../../programmers/IsCloneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace CreateIsCloneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
14
|
-
if (!expression.typeArguments?.[0])
|
|
15
|
-
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
16
|
-
|
|
17
|
-
// GET TYPE INFO
|
|
18
|
-
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
19
|
-
expression.typeArguments[0],
|
|
20
|
-
);
|
|
21
|
-
if (type.isTypeParameter())
|
|
22
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
23
|
-
|
|
24
|
-
// DO TRANSFORM
|
|
25
|
-
return IsCloneProgrammer.generate(project, modulo)(type);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const enum ErrorMessages {
|
|
30
|
-
NOT_SPECIFIED = "Error on typia.isClone(): generic argument is not specified.",
|
|
31
|
-
GENERIC_ARGUMENT = "Error on typia.isClone(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.factory("createIsClone")(
|
|
7
|
+
(project, modulo) => IsCloneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
32
9
|
}
|
|
@@ -1,32 +1,9 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
1
|
import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
|
|
4
2
|
|
|
5
|
-
import {
|
|
3
|
+
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
6
4
|
|
|
7
5
|
export namespace CreateIsPruneTransformer {
|
|
8
|
-
export
|
|
9
|
-
project
|
|
10
|
-
|
|
11
|
-
expression: ts.CallExpression,
|
|
12
|
-
): ts.Expression {
|
|
13
|
-
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
14
|
-
if (!expression.typeArguments?.[0])
|
|
15
|
-
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
16
|
-
|
|
17
|
-
// GET TYPE INFO
|
|
18
|
-
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
19
|
-
expression.typeArguments[0],
|
|
20
|
-
);
|
|
21
|
-
if (type.isTypeParameter())
|
|
22
|
-
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
23
|
-
|
|
24
|
-
// DO TRANSFORM
|
|
25
|
-
return IsPruneProgrammer.generate(project, modulo)(type);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const enum ErrorMessages {
|
|
30
|
-
NOT_SPECIFIED = "Error on typia.isPrune(): generic argument is not specified.",
|
|
31
|
-
GENERIC_ARGUMENT = "Error on typia.isPrune(): non-specified generic argument.",
|
|
6
|
+
export const transform = GenericTransformer.factory("createIsPrune")(
|
|
7
|
+
(project, modulo) => IsPruneProgrammer.generate(project, modulo),
|
|
8
|
+
);
|
|
32
9
|
}
|