typia 5.2.6 → 5.3.0-dev.20231112
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/lib/factories/ExpressionFactory.js +14 -16
- package/lib/factories/ExpressionFactory.js.map +1 -1
- package/lib/factories/JsonMetadataFactory.d.ts +1 -1
- package/lib/factories/JsonMetadataFactory.js +2 -2
- package/lib/factories/JsonMetadataFactory.js.map +1 -1
- package/lib/factories/LiteralFactory.js +2 -0
- package/lib/factories/LiteralFactory.js.map +1 -1
- package/lib/factories/MetadataCollection.d.ts +2 -2
- package/lib/factories/MetadataFactory.d.ts +1 -1
- package/lib/factories/MetadataFactory.js +236 -170
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/NumericRangeFactory.d.ts +2 -2
- package/lib/factories/NumericRangeFactory.js +41 -21
- package/lib/factories/NumericRangeFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.d.ts +1 -1
- package/lib/factories/ProtobufFactory.js +2 -2
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/internal/metadata/MetadataHelper.js +3 -2
- package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_constant.js +13 -8
- package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js +8 -5
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
- package/lib/functional/$from.d.ts +3 -0
- package/lib/functional/$from.js +9 -0
- package/lib/functional/$from.js.map +1 -0
- package/lib/functional/Namespace.js +7 -0
- package/lib/functional/Namespace.js.map +1 -1
- package/lib/module.d.ts +1 -0
- package/lib/module.js +2 -5
- package/lib/module.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +11 -16
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +1 -1
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpParameterProgrammer.js +1 -1
- package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.js +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
- package/lib/programmers/internal/application_array.js +8 -0
- package/lib/programmers/internal/application_array.js.map +1 -1
- package/lib/programmers/internal/application_number.js +8 -1
- package/lib/programmers/internal/application_number.js.map +1 -1
- package/lib/programmers/internal/application_string.js +8 -1
- package/lib/programmers/internal/application_string.js.map +1 -1
- package/lib/programmers/internal/check_array_length.js +7 -4
- package/lib/programmers/internal/check_array_length.js.map +1 -1
- package/lib/programmers/internal/check_bigint.js +7 -4
- package/lib/programmers/internal/check_bigint.js.map +1 -1
- package/lib/programmers/internal/check_number.js +7 -4
- package/lib/programmers/internal/check_number.js.map +1 -1
- package/lib/programmers/internal/check_string.js +7 -4
- package/lib/programmers/internal/check_string.js.map +1 -1
- package/lib/programmers/internal/metadata_to_pattern.js +3 -1
- package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
- package/lib/programmers/json/JsonAssertParseProgrammer.js +1 -1
- package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonIsParseProgrammer.js +1 -1
- package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +3 -8
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonValidateParseProgrammer.js +1 -1
- package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +19 -24
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +11 -16
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +11 -16
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +38 -42
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.d.ts +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +22 -25
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/reflect.d.ts +3 -0
- package/lib/reflect.js +13 -0
- package/lib/reflect.js.map +1 -0
- package/lib/schemas/json/IJsonSchema.d.ts +1 -0
- package/lib/schemas/metadata/IMetadataApplication.d.ts +2 -2
- package/lib/schemas/metadata/{IMetadataCollection.d.ts → IMetadataComponents.d.ts} +1 -1
- package/lib/schemas/metadata/{IMetadataCollection.js → IMetadataComponents.js} +1 -1
- package/lib/schemas/metadata/IMetadataComponents.js.map +1 -0
- package/lib/schemas/metadata/IMetadataConstant.d.ts +1 -1
- package/lib/schemas/metadata/IMetadataTypeTag.d.ts +2 -2
- package/lib/schemas/metadata/Metadata.d.ts +2 -2
- package/lib/schemas/metadata/Metadata.js +82 -173
- package/lib/schemas/metadata/Metadata.js.map +1 -1
- package/lib/schemas/metadata/MetadataAlias.js +1 -1
- package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
- package/lib/schemas/metadata/MetadataApplication.d.ts +13 -0
- package/lib/schemas/metadata/MetadataApplication.js +30 -0
- package/lib/schemas/metadata/MetadataApplication.js.map +1 -0
- package/lib/schemas/metadata/MetadataArrayType.js +1 -1
- package/lib/schemas/metadata/MetadataArrayType.js.map +1 -1
- package/lib/schemas/metadata/MetadataAtomic.d.ts +3 -0
- package/lib/schemas/metadata/MetadataAtomic.js +42 -0
- package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
- package/lib/schemas/metadata/MetadataComponents.d.ts +16 -0
- package/lib/schemas/metadata/MetadataComponents.js +151 -0
- package/lib/schemas/metadata/MetadataComponents.js.map +1 -0
- package/lib/schemas/metadata/MetadataConstant.d.ts +9 -1
- package/lib/schemas/metadata/MetadataConstant.js +29 -0
- package/lib/schemas/metadata/MetadataConstant.js.map +1 -1
- package/lib/schemas/metadata/MetadataEscaped.js +4 -4
- package/lib/schemas/metadata/MetadataEscaped.js.map +1 -1
- package/lib/schemas/metadata/MetadataObject.js +2 -2
- package/lib/schemas/metadata/MetadataObject.js.map +1 -1
- package/lib/schemas/metadata/MetadataProperty.js +4 -4
- package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
- package/lib/schemas/metadata/MetadataTupleType.js +1 -1
- package/lib/schemas/metadata/MetadataTupleType.js.map +1 -1
- package/lib/transformers/CallExpressionTransformer.js +5 -2
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.d.ts +1 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -5
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.d.ts +5 -0
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +58 -0
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -0
- package/package.json +2 -2
- package/src/Primitive.ts +135 -135
- package/src/executable/TypiaSetupWizard.ts +142 -142
- package/src/executable/setup/CommandExecutor.ts +8 -8
- package/src/factories/ExpressionFactory.ts +12 -13
- package/src/factories/JsonMetadataFactory.ts +53 -50
- package/src/factories/LiteralFactory.ts +2 -0
- package/src/factories/MetadataCollection.ts +282 -282
- package/src/factories/MetadataFactory.ts +55 -22
- package/src/factories/NumericRangeFactory.ts +56 -17
- package/src/factories/ProtobufFactory.ts +5 -2
- package/src/factories/internal/metadata/MetadataHelper.ts +7 -4
- package/src/factories/internal/metadata/emplace_metadata_object.ts +178 -178
- package/src/factories/internal/metadata/iterate_metadata_constant.ts +10 -8
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +9 -8
- package/src/functional/$from.ts +5 -0
- package/src/functional/$stoll.ts +8 -8
- package/src/functional/Namespace.ts +175 -168
- package/src/module.ts +1 -19
- package/src/programmers/AssertProgrammer.ts +322 -322
- package/src/programmers/CheckerProgrammer.ts +16 -17
- package/src/programmers/IsProgrammer.ts +258 -258
- package/src/programmers/RandomProgrammer.ts +4 -1
- package/src/programmers/ValidateProgrammer.ts +350 -350
- package/src/programmers/helpers/AtomicPredicator.ts +31 -31
- package/src/programmers/helpers/ProtobufUtil.ts +3 -2
- package/src/programmers/http/HttpHeadersProgrammer.ts +4 -1
- package/src/programmers/http/HttpParameterProgrammer.ts +4 -1
- package/src/programmers/http/HttpQueryProgrammer.ts +4 -1
- package/src/programmers/internal/application_array.ts +8 -0
- package/src/programmers/internal/application_number.ts +8 -1
- package/src/programmers/internal/application_string.ts +8 -1
- package/src/programmers/internal/check_array_length.ts +5 -2
- package/src/programmers/internal/check_bigint.ts +5 -2
- package/src/programmers/internal/check_dynamic_key.ts +178 -178
- package/src/programmers/internal/check_dynamic_properties.ts +202 -202
- package/src/programmers/internal/check_number.ts +5 -2
- package/src/programmers/internal/check_object.ts +62 -62
- package/src/programmers/internal/check_string.ts +5 -3
- package/src/programmers/internal/metadata_to_pattern.ts +3 -1
- package/src/programmers/json/JsonAssertParseProgrammer.ts +1 -0
- package/src/programmers/json/JsonIsParseProgrammer.ts +1 -0
- package/src/programmers/json/JsonStringifyProgrammer.ts +959 -960
- package/src/programmers/json/JsonValidateParseProgrammer.ts +1 -0
- package/src/programmers/misc/MiscCloneProgrammer.ts +787 -786
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +4 -1
- package/src/programmers/misc/MiscPruneProgrammer.ts +549 -548
- package/src/programmers/notations/NotationGeneralProgrammer.ts +717 -716
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +1 -0
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +872 -882
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +21 -21
- package/src/reflect.ts +24 -0
- package/src/schemas/json/IJsonSchema.ts +1 -0
- package/src/schemas/metadata/IMetadataApplication.ts +2 -2
- package/src/schemas/metadata/{IMetadataCollection.ts → IMetadataComponents.ts} +1 -1
- package/src/schemas/metadata/IMetadataConstant.ts +1 -1
- package/src/schemas/metadata/IMetadataTypeTag.ts +9 -2
- package/src/schemas/metadata/Metadata.ts +18 -91
- package/src/schemas/metadata/MetadataAlias.ts +1 -1
- package/src/schemas/metadata/MetadataApplication.ts +44 -0
- package/src/schemas/metadata/MetadataArrayType.ts +1 -1
- package/src/schemas/metadata/MetadataAtomic.ts +44 -0
- package/src/schemas/metadata/MetadataComponents.ts +98 -0
- package/src/schemas/metadata/MetadataConstant.ts +44 -1
- package/src/schemas/metadata/MetadataEscaped.ts +4 -4
- package/src/schemas/metadata/MetadataObject.ts +2 -2
- package/src/schemas/metadata/MetadataProperty.ts +4 -7
- package/src/schemas/metadata/MetadataTupleType.ts +1 -1
- package/src/transform.ts +35 -35
- package/src/transformers/CallExpressionTransformer.ts +5 -2
- package/src/transformers/features/json/JsonApplicationTransformer.ts +7 -4
- package/src/transformers/features/{misc/MetadataTransformer.ts → reflect/ReflectMetadataTransformer.ts} +25 -8
- package/lib/schemas/metadata/IMetadataCollection.js.map +0 -1
- package/lib/transformers/features/misc/MetadataTransformer.d.ts +0 -5
- package/lib/transformers/features/misc/MetadataTransformer.js +0 -55
- package/lib/transformers/features/misc/MetadataTransformer.js.map +0 -1
package/src/transform.ts
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
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 const transform = (
|
|
8
|
-
program: ts.Program,
|
|
9
|
-
options: ITransformOptions | undefined,
|
|
10
|
-
extras: IProject["extras"],
|
|
11
|
-
): ts.TransformerFactory<ts.SourceFile> => {
|
|
12
|
-
const compilerOptions: ts.CompilerOptions = program.getCompilerOptions();
|
|
13
|
-
const strict: boolean =
|
|
14
|
-
compilerOptions.strictNullChecks !== undefined
|
|
15
|
-
? !!compilerOptions.strictNullChecks
|
|
16
|
-
: !!compilerOptions.strict;
|
|
17
|
-
if (strict === false)
|
|
18
|
-
extras.addDiagnostic({
|
|
19
|
-
category: ts.DiagnosticCategory.Error,
|
|
20
|
-
code: "(typia)" as any,
|
|
21
|
-
file: undefined,
|
|
22
|
-
start: undefined,
|
|
23
|
-
length: undefined,
|
|
24
|
-
messageText: "strict mode is required.",
|
|
25
|
-
});
|
|
26
|
-
return FileTransformer.transform({
|
|
27
|
-
program,
|
|
28
|
-
compilerOptions,
|
|
29
|
-
checker: program.getTypeChecker(),
|
|
30
|
-
printer: ts.createPrinter(),
|
|
31
|
-
options: options ?? {},
|
|
32
|
-
extras,
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
export default transform;
|
|
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 const transform = (
|
|
8
|
+
program: ts.Program,
|
|
9
|
+
options: ITransformOptions | undefined,
|
|
10
|
+
extras: IProject["extras"],
|
|
11
|
+
): ts.TransformerFactory<ts.SourceFile> => {
|
|
12
|
+
const compilerOptions: ts.CompilerOptions = program.getCompilerOptions();
|
|
13
|
+
const strict: boolean =
|
|
14
|
+
compilerOptions.strictNullChecks !== undefined
|
|
15
|
+
? !!compilerOptions.strictNullChecks
|
|
16
|
+
: !!compilerOptions.strict;
|
|
17
|
+
if (strict === false)
|
|
18
|
+
extras.addDiagnostic({
|
|
19
|
+
category: ts.DiagnosticCategory.Error,
|
|
20
|
+
code: "(typia)" as any,
|
|
21
|
+
file: undefined,
|
|
22
|
+
start: undefined,
|
|
23
|
+
length: undefined,
|
|
24
|
+
messageText: "strict mode is required.",
|
|
25
|
+
});
|
|
26
|
+
return FileTransformer.transform({
|
|
27
|
+
program,
|
|
28
|
+
compilerOptions,
|
|
29
|
+
checker: program.getTypeChecker(),
|
|
30
|
+
printer: ts.createPrinter(),
|
|
31
|
+
options: options ?? {},
|
|
32
|
+
extras,
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export default transform;
|
|
@@ -45,7 +45,6 @@ import { JsonIsStringifyTransformer } from "./features/json/JsonIsStringifyTrans
|
|
|
45
45
|
import { JsonStringifyTransformer } from "./features/json/JsonStringifyTransformer";
|
|
46
46
|
import { JsonValidateParseTransformer } from "./features/json/JsonValidateParseTransformer";
|
|
47
47
|
import { JsonValidateStringifyTransformer } from "./features/json/JsonValidateStringifyTransformer";
|
|
48
|
-
import { MetadataTransformer } from "./features/misc/MetadataTransformer";
|
|
49
48
|
import { MiscAssertCloneTransformer } from "./features/misc/MiscAssertCloneTransformer";
|
|
50
49
|
import { MiscAssertPruneTransformer } from "./features/misc/MiscAssertPruneTransformer";
|
|
51
50
|
import { MiscCloneTransformer } from "./features/misc/MiscCloneTransformer";
|
|
@@ -88,6 +87,7 @@ import { ProtobufIsEncodeTransformer } from "./features/protobuf/ProtobufIsEncod
|
|
|
88
87
|
import { ProtobufMessageTransformer } from "./features/protobuf/ProtobufMessageTransformer";
|
|
89
88
|
import { ProtobufValidateDecodeTransformer } from "./features/protobuf/ProtobufValidateDecodeTransformer";
|
|
90
89
|
import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufValidateEncodeTransformer";
|
|
90
|
+
import { ReflectMetadataTransformer } from "./features/reflect/ReflectMetadataTransformer";
|
|
91
91
|
|
|
92
92
|
export namespace CallExpressionTransformer {
|
|
93
93
|
export const transform =
|
|
@@ -174,7 +174,7 @@ const FUNCTORS: Record<string, Record<string, () => Task>> = {
|
|
|
174
174
|
|
|
175
175
|
// RANDOM + INTERNAL
|
|
176
176
|
random: () => RandomTransformer.transform,
|
|
177
|
-
metadata: () =>
|
|
177
|
+
metadata: () => ReflectMetadataTransformer.transform,
|
|
178
178
|
|
|
179
179
|
// FACTORIES
|
|
180
180
|
createAssert: () => CreateAssertTransformer.transform(false),
|
|
@@ -270,6 +270,9 @@ const FUNCTORS: Record<string, Record<string, () => Task>> = {
|
|
|
270
270
|
createValidateDecode: () =>
|
|
271
271
|
ProtobufCreateValidateDecodeTransformer.transform,
|
|
272
272
|
},
|
|
273
|
+
reflect: {
|
|
274
|
+
metadata: () => ReflectMetadataTransformer.transform,
|
|
275
|
+
},
|
|
273
276
|
misc: {
|
|
274
277
|
literals: () => (project) => () =>
|
|
275
278
|
MiscLiteralsTransformer.transform(project),
|
|
@@ -17,7 +17,7 @@ import { TransformerError } from "../../TransformerError";
|
|
|
17
17
|
|
|
18
18
|
export namespace JsonApplicationTransformer {
|
|
19
19
|
export const transform =
|
|
20
|
-
(
|
|
20
|
+
(project: IProject) =>
|
|
21
21
|
(expression: ts.CallExpression): ts.Expression => {
|
|
22
22
|
if (!expression.typeArguments?.length)
|
|
23
23
|
throw new TransformerError({
|
|
@@ -36,7 +36,7 @@ export namespace JsonApplicationTransformer {
|
|
|
36
36
|
|
|
37
37
|
// GET TYPES
|
|
38
38
|
const types: ts.Type[] = top.elements.map((child) =>
|
|
39
|
-
checker.getTypeFromTypeNode(child as ts.TypeNode),
|
|
39
|
+
project.checker.getTypeFromTypeNode(child as ts.TypeNode),
|
|
40
40
|
);
|
|
41
41
|
if (types.some((t) => t.isTypeParameter()))
|
|
42
42
|
throw new TransformerError({
|
|
@@ -46,7 +46,7 @@ export namespace JsonApplicationTransformer {
|
|
|
46
46
|
|
|
47
47
|
// ADDITIONAL PARAMETERS
|
|
48
48
|
const purpose: "swagger" | "ajv" = get_parameter(
|
|
49
|
-
checker,
|
|
49
|
+
project.checker,
|
|
50
50
|
"Purpose",
|
|
51
51
|
expression.typeArguments[1],
|
|
52
52
|
(str) => str === "swagger" || str === "ajv",
|
|
@@ -62,7 +62,10 @@ export namespace JsonApplicationTransformer {
|
|
|
62
62
|
});
|
|
63
63
|
const results: ValidationPipe<Metadata, MetadataFactory.IError>[] =
|
|
64
64
|
types.map((type) =>
|
|
65
|
-
MetadataFactory.analyze(
|
|
65
|
+
MetadataFactory.analyze(
|
|
66
|
+
project.checker,
|
|
67
|
+
project.context,
|
|
68
|
+
)({
|
|
66
69
|
escape: true,
|
|
67
70
|
constant: true,
|
|
68
71
|
absorb: false,
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
|
+
import { IdentifierFactory } from "../../../factories/IdentifierFactory";
|
|
3
4
|
import { LiteralFactory } from "../../../factories/LiteralFactory";
|
|
4
5
|
import { MetadataCollection } from "../../../factories/MetadataCollection";
|
|
5
6
|
import { MetadataFactory } from "../../../factories/MetadataFactory";
|
|
7
|
+
import { TypeFactory } from "../../../factories/TypeFactory";
|
|
6
8
|
|
|
7
9
|
import { IMetadataApplication } from "../../../schemas/metadata/IMetadataApplication";
|
|
8
10
|
import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
@@ -10,9 +12,10 @@ import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
|
10
12
|
import { IProject } from "../../IProject";
|
|
11
13
|
import { TransformerError } from "../../TransformerError";
|
|
12
14
|
|
|
13
|
-
export namespace
|
|
15
|
+
export namespace ReflectMetadataTransformer {
|
|
14
16
|
export const transform =
|
|
15
|
-
(
|
|
17
|
+
(project: IProject) =>
|
|
18
|
+
(modulo: ts.LeftHandSideExpression) =>
|
|
16
19
|
(expression: ts.CallExpression): ts.Expression => {
|
|
17
20
|
if (!expression.typeArguments?.length)
|
|
18
21
|
throw new TransformerError({
|
|
@@ -28,24 +31,27 @@ export namespace MetadataTransformer {
|
|
|
28
31
|
|
|
29
32
|
// GET TYPES
|
|
30
33
|
const types: ts.Type[] = top.elements.map((child) =>
|
|
31
|
-
checker.getTypeFromTypeNode(child as ts.TypeNode),
|
|
34
|
+
project.checker.getTypeFromTypeNode(child as ts.TypeNode),
|
|
32
35
|
);
|
|
33
36
|
if (types.some((t) => t.isTypeParameter()))
|
|
34
37
|
throw new TransformerError({
|
|
35
|
-
code: "typia.metadata",
|
|
38
|
+
code: "typia.reflect.metadata",
|
|
36
39
|
message: "non-specified generic argument(s).",
|
|
37
40
|
});
|
|
38
41
|
|
|
39
42
|
// METADATA
|
|
40
43
|
const collection: MetadataCollection = new MetadataCollection();
|
|
41
44
|
const metadatas: Array<Metadata> = types.map((type) => {
|
|
42
|
-
const result = MetadataFactory.analyze(
|
|
45
|
+
const result = MetadataFactory.analyze(
|
|
46
|
+
project.checker,
|
|
47
|
+
project.context,
|
|
48
|
+
)({
|
|
43
49
|
escape: true,
|
|
44
50
|
constant: true,
|
|
45
51
|
absorb: true,
|
|
46
52
|
})(collection)(type);
|
|
47
53
|
if (result.success === false)
|
|
48
|
-
throw TransformerError.from("typia.metadata")(
|
|
54
|
+
throw TransformerError.from("typia.reflect.metadata")(
|
|
49
55
|
result.errors,
|
|
50
56
|
);
|
|
51
57
|
return result.data;
|
|
@@ -54,8 +60,19 @@ export namespace MetadataTransformer {
|
|
|
54
60
|
// CONVERT TO PRIMITIVE TYPE
|
|
55
61
|
const app: IMetadataApplication = {
|
|
56
62
|
metadatas: metadatas.map((metadata) => metadata.toJSON()),
|
|
57
|
-
|
|
63
|
+
components: collection.toJSON(),
|
|
58
64
|
};
|
|
59
|
-
return
|
|
65
|
+
return ts.factory.createCallExpression(
|
|
66
|
+
IdentifierFactory.access(
|
|
67
|
+
ts.factory.createParenthesizedExpression(
|
|
68
|
+
ts.factory.createAsExpression(
|
|
69
|
+
modulo,
|
|
70
|
+
TypeFactory.keyword("any"),
|
|
71
|
+
),
|
|
72
|
+
),
|
|
73
|
+
)("from"),
|
|
74
|
+
undefined,
|
|
75
|
+
[LiteralFactory.generate(app)],
|
|
76
|
+
);
|
|
60
77
|
};
|
|
61
78
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IMetadataCollection.js","sourceRoot":"","sources":["../../../src/schemas/metadata/IMetadataCollection.ts"],"names":[],"mappings":""}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MetadataTransformer = void 0;
|
|
7
|
-
var typescript_1 = __importDefault(require("typescript"));
|
|
8
|
-
var LiteralFactory_1 = require("../../../factories/LiteralFactory");
|
|
9
|
-
var MetadataCollection_1 = require("../../../factories/MetadataCollection");
|
|
10
|
-
var MetadataFactory_1 = require("../../../factories/MetadataFactory");
|
|
11
|
-
var TransformerError_1 = require("../../TransformerError");
|
|
12
|
-
var MetadataTransformer;
|
|
13
|
-
(function (MetadataTransformer) {
|
|
14
|
-
MetadataTransformer.transform = function (_a) {
|
|
15
|
-
var checker = _a.checker;
|
|
16
|
-
return function (expression) {
|
|
17
|
-
var _a;
|
|
18
|
-
if (!((_a = expression.typeArguments) === null || _a === void 0 ? void 0 : _a.length))
|
|
19
|
-
throw new TransformerError_1.TransformerError({
|
|
20
|
-
code: "typia.metadata",
|
|
21
|
-
message: "no generic argument.",
|
|
22
|
-
});
|
|
23
|
-
var top = expression.typeArguments[0];
|
|
24
|
-
if (!typescript_1.default.isTupleTypeNode(top))
|
|
25
|
-
return expression;
|
|
26
|
-
else if (top.elements.some(function (child) { return !typescript_1.default.isTypeNode(child); }))
|
|
27
|
-
return expression;
|
|
28
|
-
var types = top.elements.map(function (child) {
|
|
29
|
-
return checker.getTypeFromTypeNode(child);
|
|
30
|
-
});
|
|
31
|
-
if (types.some(function (t) { return t.isTypeParameter(); }))
|
|
32
|
-
throw new TransformerError_1.TransformerError({
|
|
33
|
-
code: "typia.metadata",
|
|
34
|
-
message: "non-specified generic argument(s).",
|
|
35
|
-
});
|
|
36
|
-
var collection = new MetadataCollection_1.MetadataCollection();
|
|
37
|
-
var metadatas = types.map(function (type) {
|
|
38
|
-
var result = MetadataFactory_1.MetadataFactory.analyze(checker)({
|
|
39
|
-
escape: true,
|
|
40
|
-
constant: true,
|
|
41
|
-
absorb: true,
|
|
42
|
-
})(collection)(type);
|
|
43
|
-
if (result.success === false)
|
|
44
|
-
throw TransformerError_1.TransformerError.from("typia.metadata")(result.errors);
|
|
45
|
-
return result.data;
|
|
46
|
-
});
|
|
47
|
-
var app = {
|
|
48
|
-
metadatas: metadatas.map(function (metadata) { return metadata.toJSON(); }),
|
|
49
|
-
collection: collection.toJSON(),
|
|
50
|
-
};
|
|
51
|
-
return LiteralFactory_1.LiteralFactory.generate(app);
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
})(MetadataTransformer || (exports.MetadataTransformer = MetadataTransformer = {}));
|
|
55
|
-
//# sourceMappingURL=MetadataTransformer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/misc/MetadataTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,4EAA2E;AAC3E,sEAAqE;AAMrE,2DAA0D;AAE1D,IAAiB,mBAAmB,CAgDnC;AAhDD,WAAiB,mBAAmB;IACnB,6BAAS,GAClB,UAAC,EAAqB;YAAnB,OAAO,aAAA;QACV,OAAA,UAAC,UAA6B;;YAC1B,IAAI,CAAC,CAAA,MAAA,UAAU,CAAC,aAAa,0CAAE,MAAM,CAAA;gBACjC,MAAM,IAAI,mCAAgB,CAAC;oBACvB,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,sBAAsB;iBAClC,CAAC,CAAC;YAGP,IAAM,GAAG,GAAY,UAAU,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC;YAClD,IAAI,CAAC,oBAAE,CAAC,eAAe,CAAC,GAAG,CAAC;gBAAE,OAAO,UAAU,CAAC;iBAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,oBAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC;gBACxD,OAAO,UAAU,CAAC;YAGtB,IAAM,KAAK,GAAc,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK;gBAC5C,OAAA,OAAO,CAAC,mBAAmB,CAAC,KAAoB,CAAC;YAAjD,CAAiD,CACpD,CAAC;YACF,IAAI,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,EAAnB,CAAmB,CAAC;gBACtC,MAAM,IAAI,mCAAgB,CAAC;oBACvB,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,oCAAoC;iBAChD,CAAC,CAAC;YAGP,IAAM,UAAU,GAAuB,IAAI,uCAAkB,EAAE,CAAC;YAChE,IAAM,SAAS,GAAoB,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI;gBAC9C,IAAM,MAAM,GAAG,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,IAAI;iBACf,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;oBACxB,MAAM,mCAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CACzC,MAAM,CAAC,MAAM,CAChB,CAAC;gBACN,OAAO,MAAM,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;YAGH,IAAM,GAAG,GAAyB;gBAC9B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,UAAC,QAAQ,IAAK,OAAA,QAAQ,CAAC,MAAM,EAAE,EAAjB,CAAiB,CAAC;gBACzD,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE;aAClC,CAAC;YACF,OAAO,+BAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IA5CD,CA4CC,CAAC;AACV,CAAC,EAhDgB,mBAAmB,mCAAnB,mBAAmB,QAgDnC"}
|