typia 3.4.13 → 3.4.14
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 +9 -8
- package/lib/factories/internal/iterate_metadata_object.js +4 -2
- package/lib/factories/internal/iterate_metadata_object.js.map +1 -1
- package/package.json +1 -1
- package/src/IValidation.ts +21 -21
- package/src/Primitive.ts +82 -82
- package/src/TypeGuardError.ts +36 -36
- package/src/executable/internal/CommandParser.ts +15 -15
- package/src/executable/internal/TypiaSetupWizard.ts +175 -175
- package/src/executable/typia.ts +46 -46
- package/src/factories/CommentFactory.ts +10 -10
- package/src/factories/ExpressionFactory.ts +66 -66
- package/src/factories/IdentifierFactory.ts +72 -72
- package/src/factories/LiteralFactory.ts +44 -44
- package/src/factories/MetadataCollection.ts +122 -122
- package/src/factories/MetadataFactory.ts +46 -46
- package/src/factories/MetadataTagFactory.ts +347 -347
- package/src/factories/StatementFactory.ts +60 -60
- package/src/factories/TemplateFactory.ts +56 -56
- package/src/factories/TypeFactory.ts +101 -101
- package/src/factories/ValueFactory.ts +12 -12
- package/src/factories/internal/MetadataHelper.ts +12 -12
- package/src/factories/internal/emplace_metadata_object.ts +140 -140
- package/src/factories/internal/explore_metadata.ts +91 -91
- package/src/factories/internal/iterate_metadata.ts +80 -80
- package/src/factories/internal/iterate_metadata_array.ts +29 -29
- package/src/factories/internal/iterate_metadata_atomic.ts +59 -59
- package/src/factories/internal/iterate_metadata_coalesce.ts +33 -33
- package/src/factories/internal/iterate_metadata_constant.ts +58 -58
- package/src/factories/internal/iterate_metadata_map.ts +41 -41
- package/src/factories/internal/iterate_metadata_native.ts +227 -227
- package/src/factories/internal/iterate_metadata_object.ts +48 -45
- package/src/factories/internal/iterate_metadata_resolve.ts +27 -27
- package/src/factories/internal/iterate_metadata_set.ts +33 -33
- package/src/factories/internal/iterate_metadata_template.ts +38 -38
- package/src/factories/internal/iterate_metadata_tuple.ts +45 -45
- package/src/factories/internal/iterate_metadata_union.ts +59 -59
- package/src/functional/$every.ts +11 -11
- package/src/functional/$guard.ts +35 -35
- package/src/functional/$is_email.ts +5 -5
- package/src/functional/$is_ipv4.ts +5 -5
- package/src/functional/$is_ipv6.ts +5 -5
- package/src/functional/$is_url.ts +5 -5
- package/src/functional/$is_uuid.ts +5 -5
- package/src/functional/$join.ts +50 -50
- package/src/functional/$number.ts +19 -19
- package/src/functional/$report.ts +15 -15
- package/src/functional/$rest.ts +3 -3
- package/src/functional/$string.ts +37 -37
- package/src/functional/$tail.ts +6 -6
- package/src/index.ts +4 -4
- package/src/metadata/IJsDocTagInfo.ts +10 -10
- package/src/metadata/IMetadata.ts +25 -25
- package/src/metadata/IMetadataApplication.ts +7 -7
- package/src/metadata/IMetadataConstant.ts +16 -16
- package/src/metadata/IMetadataEntry.ts +6 -6
- package/src/metadata/IMetadataObject.ts +29 -29
- package/src/metadata/IMetadataProperty.ts +11 -11
- package/src/metadata/IMetadataTag.ts +122 -122
- package/src/metadata/Metadata.ts +477 -477
- package/src/metadata/MetadataConstant.ts +3 -3
- package/src/metadata/MetadataObject.ts +131 -131
- package/src/metadata/MetadataProperty.ts +64 -64
- package/src/module.ts +1535 -1535
- package/src/programmers/ApplicationProgrammer.ts +55 -55
- package/src/programmers/AssertParseProgrammer.ts +45 -45
- package/src/programmers/AssertProgrammer.ts +444 -444
- package/src/programmers/AssertStringifyProgrammer.ts +45 -45
- package/src/programmers/CheckerProgrammer.ts +804 -804
- package/src/programmers/FeatureProgrammer.ts +327 -327
- package/src/programmers/IsParseProgrammer.ts +51 -51
- package/src/programmers/IsProgrammer.ts +172 -172
- package/src/programmers/IsStringifyProgrammer.ts +49 -49
- package/src/programmers/StringifyProgrammer.ts +756 -756
- package/src/programmers/ValidateParseProgrammer.ts +49 -49
- package/src/programmers/ValidateProgrammer.ts +236 -236
- package/src/programmers/ValidateStringifyProgrammer.ts +60 -60
- package/src/programmers/helpers/AtomicPredicator.ts +15 -15
- package/src/programmers/helpers/FunctionImporeter.ts +31 -31
- package/src/programmers/helpers/IExpressionEntry.ts +10 -10
- package/src/programmers/helpers/OptionPredicator.ts +11 -11
- package/src/programmers/helpers/StringifyJoinder.ts +111 -111
- package/src/programmers/helpers/StringifyPredicator.ts +18 -18
- package/src/programmers/helpers/UnionExplorer.ts +437 -437
- package/src/programmers/helpers/UnionPredicator.ts +81 -81
- package/src/programmers/internal/application_array.ts +45 -45
- package/src/programmers/internal/application_boolean.ts +17 -17
- package/src/programmers/internal/application_constant.ts +29 -29
- package/src/programmers/internal/application_default.ts +17 -17
- package/src/programmers/internal/application_default_string.ts +32 -32
- package/src/programmers/internal/application_native.ts +29 -29
- package/src/programmers/internal/application_number.ts +76 -76
- package/src/programmers/internal/application_object.ts +103 -103
- package/src/programmers/internal/application_schema.ts +221 -221
- package/src/programmers/internal/application_string.ts +49 -49
- package/src/programmers/internal/application_templates.ts +27 -27
- package/src/programmers/internal/application_tuple.ts +25 -25
- package/src/programmers/internal/check_array.ts +44 -44
- package/src/programmers/internal/check_dynamic_properties.ts +146 -146
- package/src/programmers/internal/check_everything.ts +25 -25
- package/src/programmers/internal/check_length.ts +46 -46
- package/src/programmers/internal/check_native.ts +9 -9
- package/src/programmers/internal/check_number.ts +178 -178
- package/src/programmers/internal/check_object.ts +42 -42
- package/src/programmers/internal/check_string.ts +24 -24
- package/src/programmers/internal/check_string_tags.ts +63 -63
- package/src/programmers/internal/check_template.ts +50 -50
- package/src/programmers/internal/decode_union_object.ts +73 -73
- package/src/programmers/internal/feature_object_entries.ts +49 -49
- package/src/programmers/internal/metadata_to_pattern.ts +31 -31
- package/src/programmers/internal/stringify_dynamic_properties.ts +164 -164
- package/src/programmers/internal/stringify_native.ts +8 -8
- package/src/programmers/internal/stringify_regular_properties.ts +81 -81
- package/src/programmers/internal/template_to_pattern.ts +15 -15
- package/src/schemas/IJsonApplication.ts +9 -9
- package/src/schemas/IJsonComponents.ts +24 -24
- package/src/schemas/IJsonSchema.ts +92 -92
- package/src/transform.ts +20 -20
- package/src/transformers/CallExpressionTransformer.ts +124 -124
- package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
- package/src/transformers/FileTransformer.ts +49 -49
- package/src/transformers/IProject.ts +11 -11
- package/src/transformers/ITransformOptions.ts +4 -4
- package/src/transformers/NodeTransformer.ts +19 -19
- package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +114 -114
- package/src/transformers/features/miscellaneous/CreateInstanceTransformer.ts +41 -41
- package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
- package/src/transformers/features/parsers/AssertParseTransformer.ts +36 -36
- package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +32 -32
- package/src/transformers/features/parsers/CreateIsParseTransformer.ts +32 -32
- package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +32 -32
- package/src/transformers/features/parsers/IsParseTransformer.ts +36 -36
- package/src/transformers/features/parsers/ValidateParseTransformer.ts +36 -36
- package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +38 -38
- package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +32 -32
- package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +32 -32
- package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +31 -31
- package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +32 -32
- package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +38 -38
- package/src/transformers/features/stringifiers/StringifyTransformer.ts +36 -36
- package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +38 -38
- package/src/transformers/features/validators/AssertTransformer.ts +43 -43
- package/src/transformers/features/validators/CreateAssertTransformer.ts +35 -35
- package/src/transformers/features/validators/CreateIsTransformer.ts +35 -35
- package/src/transformers/features/validators/CreateValidateTransformer.ts +35 -35
- package/src/transformers/features/validators/IsTransformer.ts +43 -43
- package/src/transformers/features/validators/ValidateTransformer.ts +43 -43
- package/src/typings/Atomic.ts +17 -17
- package/src/typings/ClassProperties.ts +5 -5
- package/src/typings/OmitNever.ts +3 -3
- package/src/typings/SpecialFields.ts +3 -3
- package/src/typings/Writable.ts +11 -11
- package/src/utils/ArrayUtil.ts +49 -49
- package/src/utils/Escaper.ts +50 -50
- package/src/utils/MapUtil.ts +14 -14
- package/src/utils/PatternUtil.ts +30 -30
- package/src/utils/Singleton.ts +17 -17
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
|
|
2
|
-
import { IMetadataTag } from "../metadata/IMetadataTag";
|
|
3
|
-
|
|
4
|
-
import { Atomic } from "../typings/Atomic";
|
|
5
|
-
|
|
6
|
-
export type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;
|
|
7
|
-
export namespace IJsonSchema {
|
|
8
|
-
export type NotUnknown =
|
|
9
|
-
| IEnumeration<"boolean">
|
|
10
|
-
| IEnumeration<"number">
|
|
11
|
-
| IEnumeration<"bigint">
|
|
12
|
-
| IEnumeration<"string">
|
|
13
|
-
| IBoolean
|
|
14
|
-
| INumber
|
|
15
|
-
| IBigInt
|
|
16
|
-
| IString
|
|
17
|
-
| IArray
|
|
18
|
-
| ITuple
|
|
19
|
-
| IOneOf
|
|
20
|
-
| IReference
|
|
21
|
-
| IRecursiveReference
|
|
22
|
-
| INullOnly;
|
|
23
|
-
|
|
24
|
-
/* -----------------------------------------------------------
|
|
25
|
-
ATOMICS
|
|
26
|
-
----------------------------------------------------------- */
|
|
27
|
-
export interface IEnumeration<Literal extends Atomic.Literal>
|
|
28
|
-
extends IAtomic<Literal> {
|
|
29
|
-
enum: Array<Atomic.Mapper[Literal]>;
|
|
30
|
-
}
|
|
31
|
-
export interface IAtomic<Literal extends Atomic.Literal>
|
|
32
|
-
extends ISignificant<Literal> {
|
|
33
|
-
default?: Atomic.Mapper[Literal];
|
|
34
|
-
}
|
|
35
|
-
export interface IString extends IAtomic<"string"> {
|
|
36
|
-
minLength?: number;
|
|
37
|
-
maxLength?: number;
|
|
38
|
-
pattern?: string;
|
|
39
|
-
format?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface INumber extends IAtomic<"number" | "integer"> {
|
|
42
|
-
minimum?: number;
|
|
43
|
-
maximum?: number;
|
|
44
|
-
exclusiveMinimum?: number;
|
|
45
|
-
exclusiveMaximum?: number;
|
|
46
|
-
multipleOf?: number;
|
|
47
|
-
}
|
|
48
|
-
export interface IBoolean extends IAtomic<"boolean"> {}
|
|
49
|
-
export interface IBigInt extends IAtomic<"bigint"> {}
|
|
50
|
-
|
|
51
|
-
/* -----------------------------------------------------------
|
|
52
|
-
OBJECTS
|
|
53
|
-
----------------------------------------------------------- */
|
|
54
|
-
export interface IArray extends ISignificant<"array"> {
|
|
55
|
-
items: IJsonSchema;
|
|
56
|
-
minItems?: number;
|
|
57
|
-
maxItems?: number;
|
|
58
|
-
}
|
|
59
|
-
export interface ITuple extends ISignificant<"array"> {
|
|
60
|
-
items: IJsonSchema[];
|
|
61
|
-
}
|
|
62
|
-
export interface IReference extends IAttribute {
|
|
63
|
-
$ref: string;
|
|
64
|
-
}
|
|
65
|
-
export interface IRecursiveReference extends IAttribute {
|
|
66
|
-
$recursiveRef: string;
|
|
67
|
-
}
|
|
68
|
-
export interface INullOnly extends IAttribute {
|
|
69
|
-
type: "null";
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/* -----------------------------------------------------------
|
|
73
|
-
MISCELLANEOUS
|
|
74
|
-
----------------------------------------------------------- */
|
|
75
|
-
export interface IOneOf extends IAttribute {
|
|
76
|
-
oneOf: IJsonSchema[];
|
|
77
|
-
}
|
|
78
|
-
export interface IUnknown {}
|
|
79
|
-
|
|
80
|
-
export interface ISignificant<Literal extends string> extends IAttribute {
|
|
81
|
-
type: Literal;
|
|
82
|
-
nullable: boolean;
|
|
83
|
-
}
|
|
84
|
-
export interface IAttribute {
|
|
85
|
-
deprecated?: boolean;
|
|
86
|
-
title?: string;
|
|
87
|
-
description?: string;
|
|
88
|
-
"x-typia-metaTags"?: IMetadataTag[];
|
|
89
|
-
"x-typia-jsDocTags"?: IJsDocTagInfo[];
|
|
90
|
-
"x-typia-required"?: boolean;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
1
|
+
import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
|
|
2
|
+
import { IMetadataTag } from "../metadata/IMetadataTag";
|
|
3
|
+
|
|
4
|
+
import { Atomic } from "../typings/Atomic";
|
|
5
|
+
|
|
6
|
+
export type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;
|
|
7
|
+
export namespace IJsonSchema {
|
|
8
|
+
export type NotUnknown =
|
|
9
|
+
| IEnumeration<"boolean">
|
|
10
|
+
| IEnumeration<"number">
|
|
11
|
+
| IEnumeration<"bigint">
|
|
12
|
+
| IEnumeration<"string">
|
|
13
|
+
| IBoolean
|
|
14
|
+
| INumber
|
|
15
|
+
| IBigInt
|
|
16
|
+
| IString
|
|
17
|
+
| IArray
|
|
18
|
+
| ITuple
|
|
19
|
+
| IOneOf
|
|
20
|
+
| IReference
|
|
21
|
+
| IRecursiveReference
|
|
22
|
+
| INullOnly;
|
|
23
|
+
|
|
24
|
+
/* -----------------------------------------------------------
|
|
25
|
+
ATOMICS
|
|
26
|
+
----------------------------------------------------------- */
|
|
27
|
+
export interface IEnumeration<Literal extends Atomic.Literal>
|
|
28
|
+
extends IAtomic<Literal> {
|
|
29
|
+
enum: Array<Atomic.Mapper[Literal]>;
|
|
30
|
+
}
|
|
31
|
+
export interface IAtomic<Literal extends Atomic.Literal>
|
|
32
|
+
extends ISignificant<Literal> {
|
|
33
|
+
default?: Atomic.Mapper[Literal];
|
|
34
|
+
}
|
|
35
|
+
export interface IString extends IAtomic<"string"> {
|
|
36
|
+
minLength?: number;
|
|
37
|
+
maxLength?: number;
|
|
38
|
+
pattern?: string;
|
|
39
|
+
format?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface INumber extends IAtomic<"number" | "integer"> {
|
|
42
|
+
minimum?: number;
|
|
43
|
+
maximum?: number;
|
|
44
|
+
exclusiveMinimum?: number;
|
|
45
|
+
exclusiveMaximum?: number;
|
|
46
|
+
multipleOf?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface IBoolean extends IAtomic<"boolean"> {}
|
|
49
|
+
export interface IBigInt extends IAtomic<"bigint"> {}
|
|
50
|
+
|
|
51
|
+
/* -----------------------------------------------------------
|
|
52
|
+
OBJECTS
|
|
53
|
+
----------------------------------------------------------- */
|
|
54
|
+
export interface IArray extends ISignificant<"array"> {
|
|
55
|
+
items: IJsonSchema;
|
|
56
|
+
minItems?: number;
|
|
57
|
+
maxItems?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface ITuple extends ISignificant<"array"> {
|
|
60
|
+
items: IJsonSchema[];
|
|
61
|
+
}
|
|
62
|
+
export interface IReference extends IAttribute {
|
|
63
|
+
$ref: string;
|
|
64
|
+
}
|
|
65
|
+
export interface IRecursiveReference extends IAttribute {
|
|
66
|
+
$recursiveRef: string;
|
|
67
|
+
}
|
|
68
|
+
export interface INullOnly extends IAttribute {
|
|
69
|
+
type: "null";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* -----------------------------------------------------------
|
|
73
|
+
MISCELLANEOUS
|
|
74
|
+
----------------------------------------------------------- */
|
|
75
|
+
export interface IOneOf extends IAttribute {
|
|
76
|
+
oneOf: IJsonSchema[];
|
|
77
|
+
}
|
|
78
|
+
export interface IUnknown {}
|
|
79
|
+
|
|
80
|
+
export interface ISignificant<Literal extends string> extends IAttribute {
|
|
81
|
+
type: Literal;
|
|
82
|
+
nullable: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface IAttribute {
|
|
85
|
+
deprecated?: boolean;
|
|
86
|
+
title?: string;
|
|
87
|
+
description?: string;
|
|
88
|
+
"x-typia-metaTags"?: IMetadataTag[];
|
|
89
|
+
"x-typia-jsDocTags"?: IJsDocTagInfo[];
|
|
90
|
+
"x-typia-required"?: boolean;
|
|
91
|
+
}
|
|
92
|
+
}
|
package/src/transform.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
|
-
import { FileTransformer } from "./transformers/FileTransformer";
|
|
4
|
-
import { IProject } from "./transformers/IProject";
|
|
5
|
-
import { ITransformOptions } from "./transformers/ITransformOptions";
|
|
6
|
-
|
|
7
|
-
export default function transform(
|
|
8
|
-
program: ts.Program,
|
|
9
|
-
options?: ITransformOptions,
|
|
10
|
-
): ts.TransformerFactory<ts.SourceFile> {
|
|
11
|
-
const project: IProject = {
|
|
12
|
-
program,
|
|
13
|
-
compilerOptions: program.getCompilerOptions(),
|
|
14
|
-
checker: program.getTypeChecker(),
|
|
15
|
-
printer: ts.createPrinter(),
|
|
16
|
-
options: options || {},
|
|
17
|
-
};
|
|
18
|
-
return (context) => (file) =>
|
|
19
|
-
FileTransformer.transform(project, context, file);
|
|
20
|
-
}
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
|
|
3
|
+
import { FileTransformer } from "./transformers/FileTransformer";
|
|
4
|
+
import { IProject } from "./transformers/IProject";
|
|
5
|
+
import { ITransformOptions } from "./transformers/ITransformOptions";
|
|
6
|
+
|
|
7
|
+
export default function transform(
|
|
8
|
+
program: ts.Program,
|
|
9
|
+
options?: ITransformOptions,
|
|
10
|
+
): ts.TransformerFactory<ts.SourceFile> {
|
|
11
|
+
const project: IProject = {
|
|
12
|
+
program,
|
|
13
|
+
compilerOptions: program.getCompilerOptions(),
|
|
14
|
+
checker: program.getTypeChecker(),
|
|
15
|
+
printer: ts.createPrinter(),
|
|
16
|
+
options: options || {},
|
|
17
|
+
};
|
|
18
|
+
return (context) => (file) =>
|
|
19
|
+
FileTransformer.transform(project, context, file);
|
|
20
|
+
}
|
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import ts from "typescript";
|
|
3
|
-
|
|
4
|
-
import { IProject } from "./IProject";
|
|
5
|
-
import { ApplicationTransformer } from "./features/miscellaneous/ApplicationTransformer";
|
|
6
|
-
import { MetadataTransformer } from "./features/miscellaneous/MetadataTransformer";
|
|
7
|
-
import { AssertParseTransformer } from "./features/parsers/AssertParseTransformer";
|
|
8
|
-
import { CreateAssertParseTransformer } from "./features/parsers/CreateAssertParseTransformer";
|
|
9
|
-
import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransformer";
|
|
10
|
-
import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
|
|
11
|
-
import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
|
|
12
|
-
import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
|
|
13
|
-
import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
|
|
14
|
-
import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
|
|
15
|
-
import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
|
|
16
|
-
import { CreateStringifyTransformer } from "./features/stringifiers/CreateStringifyTransformer";
|
|
17
|
-
import { CreateValidateStringifyTransformer } from "./features/stringifiers/CreateValidateStringifyProgrammer";
|
|
18
|
-
import { IsStringifyTransformer } from "./features/stringifiers/IsStringifyTransformer";
|
|
19
|
-
import { StringifyTransformer } from "./features/stringifiers/StringifyTransformer";
|
|
20
|
-
import { ValidateStringifyTransformer } from "./features/stringifiers/ValidateStringifyTransformer";
|
|
21
|
-
import { AssertTransformer } from "./features/validators/AssertTransformer";
|
|
22
|
-
import { CreateAssertTransformer } from "./features/validators/CreateAssertTransformer";
|
|
23
|
-
import { CreateIsTransformer } from "./features/validators/CreateIsTransformer";
|
|
24
|
-
import { CreateValidateTransformer } from "./features/validators/CreateValidateTransformer";
|
|
25
|
-
import { IsTransformer } from "./features/validators/IsTransformer";
|
|
26
|
-
import { ValidateTransformer } from "./features/validators/ValidateTransformer";
|
|
27
|
-
|
|
28
|
-
export namespace CallExpressionTransformer {
|
|
29
|
-
export function transform(
|
|
30
|
-
project: IProject,
|
|
31
|
-
expression: ts.CallExpression,
|
|
32
|
-
): ts.Expression {
|
|
33
|
-
//----
|
|
34
|
-
// VALIDATIONS
|
|
35
|
-
//----
|
|
36
|
-
// SIGNATURE DECLARATION
|
|
37
|
-
const declaration: ts.Declaration | undefined =
|
|
38
|
-
project.checker.getResolvedSignature(expression)?.declaration;
|
|
39
|
-
if (!declaration) return expression;
|
|
40
|
-
|
|
41
|
-
// FILE PATH
|
|
42
|
-
const file: string = path.resolve(declaration.getSourceFile().fileName);
|
|
43
|
-
if (file.indexOf(LIB_PATH) === -1 && file !== SRC_PATH)
|
|
44
|
-
return expression;
|
|
45
|
-
|
|
46
|
-
//----
|
|
47
|
-
// TRANSFORMATION
|
|
48
|
-
//----
|
|
49
|
-
// FUNCTION NAME
|
|
50
|
-
const { name } = project.checker.getTypeAtLocation(declaration).symbol;
|
|
51
|
-
|
|
52
|
-
// FIND TRANSFORMER
|
|
53
|
-
const functor: (() => Task) | undefined = FUNCTORS[name];
|
|
54
|
-
if (functor === undefined) return expression;
|
|
55
|
-
|
|
56
|
-
// RETURNS WITH TRANSFORMATION
|
|
57
|
-
return functor()(project, expression.expression, expression);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
type Task = (
|
|
62
|
-
project: IProject,
|
|
63
|
-
modulo: ts.LeftHandSideExpression,
|
|
64
|
-
expression: ts.CallExpression,
|
|
65
|
-
) => ts.Expression;
|
|
66
|
-
|
|
67
|
-
const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
|
|
68
|
-
const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
|
|
69
|
-
|
|
70
|
-
const FUNCTORS: Record<string, () => Task> = {
|
|
71
|
-
//----
|
|
72
|
-
// SINGLE FUNCTIONS
|
|
73
|
-
//----
|
|
74
|
-
// BASIC VALIDATORS
|
|
75
|
-
assert: () => AssertTransformer.transform(false),
|
|
76
|
-
assertType: () => AssertTransformer.transform(false),
|
|
77
|
-
is: () => IsTransformer.transform(false),
|
|
78
|
-
validate: () => ValidateTransformer.transform(false),
|
|
79
|
-
|
|
80
|
-
// STRICT VALIDATORS
|
|
81
|
-
assertEquals: () => AssertTransformer.transform(true),
|
|
82
|
-
equals: () => IsTransformer.transform(true),
|
|
83
|
-
validateEquals: () => ValidateTransformer.transform(true),
|
|
84
|
-
|
|
85
|
-
// PARSE FUNCTIONS
|
|
86
|
-
isParse: () => IsParseTransformer.transform,
|
|
87
|
-
assertParse: () => AssertParseTransformer.transform,
|
|
88
|
-
validateParse: () => ValidateParseTransformer.transform,
|
|
89
|
-
|
|
90
|
-
// STRINGIFY FUNCTIONS
|
|
91
|
-
stringify: () => StringifyTransformer.transform,
|
|
92
|
-
assertStringify: () => AssertStringifyTransformer.transform,
|
|
93
|
-
isStringify: () => IsStringifyTransformer.transform,
|
|
94
|
-
validateStringify: () => ValidateStringifyTransformer.transform,
|
|
95
|
-
|
|
96
|
-
// MISC
|
|
97
|
-
application: () => ApplicationTransformer.transform,
|
|
98
|
-
metadata: () => MetadataTransformer.transform,
|
|
99
|
-
|
|
100
|
-
//----
|
|
101
|
-
// FACTORY FUNCTIONS
|
|
102
|
-
//----
|
|
103
|
-
// BASIC VALIDATORS
|
|
104
|
-
createAssert: () => CreateAssertTransformer.transform(false),
|
|
105
|
-
createAssertType: () => CreateAssertTransformer.transform(false),
|
|
106
|
-
createIs: () => CreateIsTransformer.transform(false),
|
|
107
|
-
createValidate: () => CreateValidateTransformer.transform(false),
|
|
108
|
-
|
|
109
|
-
// STRICT VALIDATORS
|
|
110
|
-
createAssertEquals: () => CreateAssertTransformer.transform(true),
|
|
111
|
-
createEquals: () => CreateIsTransformer.transform(true),
|
|
112
|
-
createValidateEquals: () => CreateValidateTransformer.transform(true),
|
|
113
|
-
|
|
114
|
-
// PARSE FUNCTIONS
|
|
115
|
-
createIsParse: () => CreateIsParseTransformer.transform,
|
|
116
|
-
createAssertParse: () => CreateAssertParseTransformer.transform,
|
|
117
|
-
createValidateParse: () => CreateValidateParseTransformer.transform,
|
|
118
|
-
|
|
119
|
-
// STRINGIFY FUNCTIONS
|
|
120
|
-
createStringify: () => CreateStringifyTransformer.transform,
|
|
121
|
-
createAssertStringify: () => CreateAssertStringifyTransformer.transform,
|
|
122
|
-
createIsStringify: () => CreateIsStringifyTransformer.transform,
|
|
123
|
-
createValidateStringify: () => CreateValidateStringifyTransformer.transform,
|
|
124
|
-
};
|
|
1
|
+
import path from "path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
|
|
4
|
+
import { IProject } from "./IProject";
|
|
5
|
+
import { ApplicationTransformer } from "./features/miscellaneous/ApplicationTransformer";
|
|
6
|
+
import { MetadataTransformer } from "./features/miscellaneous/MetadataTransformer";
|
|
7
|
+
import { AssertParseTransformer } from "./features/parsers/AssertParseTransformer";
|
|
8
|
+
import { CreateAssertParseTransformer } from "./features/parsers/CreateAssertParseTransformer";
|
|
9
|
+
import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransformer";
|
|
10
|
+
import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
|
|
11
|
+
import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
|
|
12
|
+
import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
|
|
13
|
+
import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
|
|
14
|
+
import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
|
|
15
|
+
import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
|
|
16
|
+
import { CreateStringifyTransformer } from "./features/stringifiers/CreateStringifyTransformer";
|
|
17
|
+
import { CreateValidateStringifyTransformer } from "./features/stringifiers/CreateValidateStringifyProgrammer";
|
|
18
|
+
import { IsStringifyTransformer } from "./features/stringifiers/IsStringifyTransformer";
|
|
19
|
+
import { StringifyTransformer } from "./features/stringifiers/StringifyTransformer";
|
|
20
|
+
import { ValidateStringifyTransformer } from "./features/stringifiers/ValidateStringifyTransformer";
|
|
21
|
+
import { AssertTransformer } from "./features/validators/AssertTransformer";
|
|
22
|
+
import { CreateAssertTransformer } from "./features/validators/CreateAssertTransformer";
|
|
23
|
+
import { CreateIsTransformer } from "./features/validators/CreateIsTransformer";
|
|
24
|
+
import { CreateValidateTransformer } from "./features/validators/CreateValidateTransformer";
|
|
25
|
+
import { IsTransformer } from "./features/validators/IsTransformer";
|
|
26
|
+
import { ValidateTransformer } from "./features/validators/ValidateTransformer";
|
|
27
|
+
|
|
28
|
+
export namespace CallExpressionTransformer {
|
|
29
|
+
export function transform(
|
|
30
|
+
project: IProject,
|
|
31
|
+
expression: ts.CallExpression,
|
|
32
|
+
): ts.Expression {
|
|
33
|
+
//----
|
|
34
|
+
// VALIDATIONS
|
|
35
|
+
//----
|
|
36
|
+
// SIGNATURE DECLARATION
|
|
37
|
+
const declaration: ts.Declaration | undefined =
|
|
38
|
+
project.checker.getResolvedSignature(expression)?.declaration;
|
|
39
|
+
if (!declaration) return expression;
|
|
40
|
+
|
|
41
|
+
// FILE PATH
|
|
42
|
+
const file: string = path.resolve(declaration.getSourceFile().fileName);
|
|
43
|
+
if (file.indexOf(LIB_PATH) === -1 && file !== SRC_PATH)
|
|
44
|
+
return expression;
|
|
45
|
+
|
|
46
|
+
//----
|
|
47
|
+
// TRANSFORMATION
|
|
48
|
+
//----
|
|
49
|
+
// FUNCTION NAME
|
|
50
|
+
const { name } = project.checker.getTypeAtLocation(declaration).symbol;
|
|
51
|
+
|
|
52
|
+
// FIND TRANSFORMER
|
|
53
|
+
const functor: (() => Task) | undefined = FUNCTORS[name];
|
|
54
|
+
if (functor === undefined) return expression;
|
|
55
|
+
|
|
56
|
+
// RETURNS WITH TRANSFORMATION
|
|
57
|
+
return functor()(project, expression.expression, expression);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type Task = (
|
|
62
|
+
project: IProject,
|
|
63
|
+
modulo: ts.LeftHandSideExpression,
|
|
64
|
+
expression: ts.CallExpression,
|
|
65
|
+
) => ts.Expression;
|
|
66
|
+
|
|
67
|
+
const LIB_PATH = path.join("node_modules", "typia", "lib", "module.d.ts");
|
|
68
|
+
const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
|
|
69
|
+
|
|
70
|
+
const FUNCTORS: Record<string, () => Task> = {
|
|
71
|
+
//----
|
|
72
|
+
// SINGLE FUNCTIONS
|
|
73
|
+
//----
|
|
74
|
+
// BASIC VALIDATORS
|
|
75
|
+
assert: () => AssertTransformer.transform(false),
|
|
76
|
+
assertType: () => AssertTransformer.transform(false),
|
|
77
|
+
is: () => IsTransformer.transform(false),
|
|
78
|
+
validate: () => ValidateTransformer.transform(false),
|
|
79
|
+
|
|
80
|
+
// STRICT VALIDATORS
|
|
81
|
+
assertEquals: () => AssertTransformer.transform(true),
|
|
82
|
+
equals: () => IsTransformer.transform(true),
|
|
83
|
+
validateEquals: () => ValidateTransformer.transform(true),
|
|
84
|
+
|
|
85
|
+
// PARSE FUNCTIONS
|
|
86
|
+
isParse: () => IsParseTransformer.transform,
|
|
87
|
+
assertParse: () => AssertParseTransformer.transform,
|
|
88
|
+
validateParse: () => ValidateParseTransformer.transform,
|
|
89
|
+
|
|
90
|
+
// STRINGIFY FUNCTIONS
|
|
91
|
+
stringify: () => StringifyTransformer.transform,
|
|
92
|
+
assertStringify: () => AssertStringifyTransformer.transform,
|
|
93
|
+
isStringify: () => IsStringifyTransformer.transform,
|
|
94
|
+
validateStringify: () => ValidateStringifyTransformer.transform,
|
|
95
|
+
|
|
96
|
+
// MISC
|
|
97
|
+
application: () => ApplicationTransformer.transform,
|
|
98
|
+
metadata: () => MetadataTransformer.transform,
|
|
99
|
+
|
|
100
|
+
//----
|
|
101
|
+
// FACTORY FUNCTIONS
|
|
102
|
+
//----
|
|
103
|
+
// BASIC VALIDATORS
|
|
104
|
+
createAssert: () => CreateAssertTransformer.transform(false),
|
|
105
|
+
createAssertType: () => CreateAssertTransformer.transform(false),
|
|
106
|
+
createIs: () => CreateIsTransformer.transform(false),
|
|
107
|
+
createValidate: () => CreateValidateTransformer.transform(false),
|
|
108
|
+
|
|
109
|
+
// STRICT VALIDATORS
|
|
110
|
+
createAssertEquals: () => CreateAssertTransformer.transform(true),
|
|
111
|
+
createEquals: () => CreateIsTransformer.transform(true),
|
|
112
|
+
createValidateEquals: () => CreateValidateTransformer.transform(true),
|
|
113
|
+
|
|
114
|
+
// PARSE FUNCTIONS
|
|
115
|
+
createIsParse: () => CreateIsParseTransformer.transform,
|
|
116
|
+
createAssertParse: () => CreateAssertParseTransformer.transform,
|
|
117
|
+
createValidateParse: () => CreateValidateParseTransformer.transform,
|
|
118
|
+
|
|
119
|
+
// STRINGIFY FUNCTIONS
|
|
120
|
+
createStringify: () => CreateStringifyTransformer.transform,
|
|
121
|
+
createAssertStringify: () => CreateAssertStringifyTransformer.transform,
|
|
122
|
+
createIsStringify: () => CreateIsStringifyTransformer.transform,
|
|
123
|
+
createValidateStringify: () => CreateValidateStringifyTransformer.transform,
|
|
124
|
+
};
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
// import path from "path";
|
|
2
|
-
// import ts from "typescript";
|
|
3
|
-
// import { AssertProgrammer } from "../programmers/AssertProgrammer";
|
|
4
|
-
// import { IsProgrammer } from "../programmers/IsProgrammer";
|
|
5
|
-
// import { StringifyProgrammer } from "../programmers/StringifyProgrammer";
|
|
6
|
-
// import { IProject } from "../structures/IProject";
|
|
7
|
-
|
|
8
|
-
// export namespace ExpressionWithArgumentTransformer {
|
|
9
|
-
// export function transform(
|
|
10
|
-
// project: IProject,
|
|
11
|
-
// expression: ts.ExpressionWithTypeArguments,
|
|
12
|
-
// ): ts.Expression {
|
|
13
|
-
// //----
|
|
14
|
-
// // VALIDATIONS
|
|
15
|
-
// //----
|
|
16
|
-
// // SYMBOL DECLARATION
|
|
17
|
-
// const symbol: ts.Symbol | undefined =
|
|
18
|
-
// project.checker.getSymbolAtLocation(expression.expression);
|
|
19
|
-
// const declaration: ts.Declaration | undefined = symbol?.declarations
|
|
20
|
-
// ? symbol.declarations[0]
|
|
21
|
-
// : undefined;
|
|
22
|
-
// if (!declaration) return expression;
|
|
23
|
-
|
|
24
|
-
// // FILE PATH
|
|
25
|
-
// const file: string = path.resolve(declaration.getSourceFile().fileName);
|
|
26
|
-
// if (file !== LIB_PATH && file !== SRC_PATH) return expression;
|
|
27
|
-
|
|
28
|
-
// // ARGUMENTS
|
|
29
|
-
// if (expression.typeArguments?.length !== 1) return expression;
|
|
30
|
-
|
|
31
|
-
// //----
|
|
32
|
-
// // TRANSFORMATION
|
|
33
|
-
// //----
|
|
34
|
-
// // GET MODULO AND TYPE
|
|
35
|
-
// const modulo: ts.LeftHandSideExpression = expression.expression;
|
|
36
|
-
// const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
37
|
-
// expression.typeArguments[0]!,
|
|
38
|
-
// );
|
|
39
|
-
|
|
40
|
-
// // FUNCTION NAME
|
|
41
|
-
// const { name } = project.checker.getTypeAtLocation(declaration).symbol;
|
|
42
|
-
|
|
43
|
-
// // FIND TRANSFORMER
|
|
44
|
-
// const functor: (() => Task) | undefined = FUNCTORS[name];
|
|
45
|
-
// if (functor === undefined) return expression;
|
|
46
|
-
|
|
47
|
-
// // RETURNS WITH TRANSFORMATION
|
|
48
|
-
// return functor()(project, modulo, type);
|
|
49
|
-
// }
|
|
50
|
-
// }
|
|
51
|
-
|
|
52
|
-
// type Task = (
|
|
53
|
-
// project: IProject,
|
|
54
|
-
// modulo: ts.LeftHandSideExpression,
|
|
55
|
-
// type: ts.Type,
|
|
56
|
-
// ) => ts.ArrowFunction;
|
|
57
|
-
|
|
58
|
-
// const LIB_PATH = path.resolve(path.join(__dirname, "..", "module.d.ts"));
|
|
59
|
-
// const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
|
|
60
|
-
|
|
61
|
-
// const FUNCTORS: Record<string, () => Task> = {
|
|
62
|
-
// assert: () => AssertProgrammer.generate,
|
|
63
|
-
// is: () => (project, _modulo, type) => IsProgrammer.generate(project, type),
|
|
64
|
-
// stringify: () => (project, modulo, type) =>
|
|
65
|
-
// StringifyProgrammer.generate(modulo)(project, type),
|
|
66
|
-
// };
|
|
1
|
+
// import path from "path";
|
|
2
|
+
// import ts from "typescript";
|
|
3
|
+
// import { AssertProgrammer } from "../programmers/AssertProgrammer";
|
|
4
|
+
// import { IsProgrammer } from "../programmers/IsProgrammer";
|
|
5
|
+
// import { StringifyProgrammer } from "../programmers/StringifyProgrammer";
|
|
6
|
+
// import { IProject } from "../structures/IProject";
|
|
7
|
+
|
|
8
|
+
// export namespace ExpressionWithArgumentTransformer {
|
|
9
|
+
// export function transform(
|
|
10
|
+
// project: IProject,
|
|
11
|
+
// expression: ts.ExpressionWithTypeArguments,
|
|
12
|
+
// ): ts.Expression {
|
|
13
|
+
// //----
|
|
14
|
+
// // VALIDATIONS
|
|
15
|
+
// //----
|
|
16
|
+
// // SYMBOL DECLARATION
|
|
17
|
+
// const symbol: ts.Symbol | undefined =
|
|
18
|
+
// project.checker.getSymbolAtLocation(expression.expression);
|
|
19
|
+
// const declaration: ts.Declaration | undefined = symbol?.declarations
|
|
20
|
+
// ? symbol.declarations[0]
|
|
21
|
+
// : undefined;
|
|
22
|
+
// if (!declaration) return expression;
|
|
23
|
+
|
|
24
|
+
// // FILE PATH
|
|
25
|
+
// const file: string = path.resolve(declaration.getSourceFile().fileName);
|
|
26
|
+
// if (file !== LIB_PATH && file !== SRC_PATH) return expression;
|
|
27
|
+
|
|
28
|
+
// // ARGUMENTS
|
|
29
|
+
// if (expression.typeArguments?.length !== 1) return expression;
|
|
30
|
+
|
|
31
|
+
// //----
|
|
32
|
+
// // TRANSFORMATION
|
|
33
|
+
// //----
|
|
34
|
+
// // GET MODULO AND TYPE
|
|
35
|
+
// const modulo: ts.LeftHandSideExpression = expression.expression;
|
|
36
|
+
// const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
37
|
+
// expression.typeArguments[0]!,
|
|
38
|
+
// );
|
|
39
|
+
|
|
40
|
+
// // FUNCTION NAME
|
|
41
|
+
// const { name } = project.checker.getTypeAtLocation(declaration).symbol;
|
|
42
|
+
|
|
43
|
+
// // FIND TRANSFORMER
|
|
44
|
+
// const functor: (() => Task) | undefined = FUNCTORS[name];
|
|
45
|
+
// if (functor === undefined) return expression;
|
|
46
|
+
|
|
47
|
+
// // RETURNS WITH TRANSFORMATION
|
|
48
|
+
// return functor()(project, modulo, type);
|
|
49
|
+
// }
|
|
50
|
+
// }
|
|
51
|
+
|
|
52
|
+
// type Task = (
|
|
53
|
+
// project: IProject,
|
|
54
|
+
// modulo: ts.LeftHandSideExpression,
|
|
55
|
+
// type: ts.Type,
|
|
56
|
+
// ) => ts.ArrowFunction;
|
|
57
|
+
|
|
58
|
+
// const LIB_PATH = path.resolve(path.join(__dirname, "..", "module.d.ts"));
|
|
59
|
+
// const SRC_PATH = path.resolve(path.join(__dirname, "..", "module.ts"));
|
|
60
|
+
|
|
61
|
+
// const FUNCTORS: Record<string, () => Task> = {
|
|
62
|
+
// assert: () => AssertProgrammer.generate,
|
|
63
|
+
// is: () => (project, _modulo, type) => IsProgrammer.generate(project, type),
|
|
64
|
+
// stringify: () => (project, modulo, type) =>
|
|
65
|
+
// StringifyProgrammer.generate(modulo)(project, type),
|
|
66
|
+
// };
|