typia 5.0.0-dev.20230827 → 5.0.0-dev.20230829
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/executable/TypiaGenerateWizard.js +1 -1
- package/lib/executable/TypiaGenerateWizard.js.map +1 -1
- package/lib/executable/TypiaSetupWizard.js +1 -1
- package/lib/executable/TypiaSetupWizard.js.map +1 -1
- package/lib/executable/setup/PackageManager.js +1 -1
- package/lib/executable/setup/PackageManager.js.map +1 -1
- package/lib/executable/setup/PluginConfigurator.js +2 -2
- package/lib/executable/setup/PluginConfigurator.js.map +1 -1
- package/lib/factories/ExpressionFactory.js +2 -2
- package/lib/factories/ExpressionFactory.js.map +1 -1
- package/lib/factories/JsonMetadataFactory.d.ts +7 -0
- package/lib/factories/JsonMetadataFactory.js +38 -0
- package/lib/factories/JsonMetadataFactory.js.map +1 -0
- package/lib/factories/LiteralFactory.js +1 -1
- package/lib/factories/LiteralFactory.js.map +1 -1
- package/lib/factories/MetadataCollection.js +0 -1
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataCommentTagFactory.js +129 -118
- package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
- package/lib/factories/MetadataFactory.d.ts +22 -2
- package/lib/factories/MetadataFactory.js +248 -17
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
- package/lib/factories/MetadataTypeTagFactory.js +246 -173
- package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.js +112 -97
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/TypeFactory.d.ts +0 -1
- package/lib/factories/TypeFactory.js +0 -5
- package/lib/factories/TypeFactory.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_alias.js +20 -7
- package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js +20 -7
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_object.js +100 -84
- package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_tuple.js +34 -21
- package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
- package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
- package/lib/factories/internal/metadata/explore_metadata.js +12 -12
- package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.js +39 -19
- package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_alias.js +12 -10
- package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -9
- package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.js +47 -45
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -1
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +16 -20
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js +145 -135
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_map.js +28 -15
- package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_object.js +16 -14
- package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_resolve.js +28 -15
- package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_set.js +24 -11
- package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_template.js +28 -15
- package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_tuple.js +11 -9
- package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_union.js +20 -7
- package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +13 -8
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +1 -1
- package/lib/programmers/FeatureProgrammer.js +1 -1
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.js +1 -1
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +9 -4
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/TypiaProgrammer.js +58 -28
- package/lib/programmers/TypiaProgrammer.js.map +1 -1
- package/lib/programmers/helpers/ProtobufUtil.js +1 -1
- package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
- package/lib/programmers/internal/application_escaped.d.ts +4 -0
- package/lib/programmers/internal/{application_resolved.js → application_escaped.js} +4 -4
- package/lib/programmers/internal/application_escaped.js.map +1 -0
- package/lib/programmers/internal/application_schema.js +5 -5
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/programmers/json/JsonApplicationProgrammer.js +5 -1
- package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonAssertParseProgrammer.js +2 -0
- package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonIsParseProgrammer.js +2 -0
- package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +20 -62
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -0
- package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +13 -8
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +13 -8
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +21 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +11 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +22 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/schemas/metadata/Metadata.js +4 -4
- package/lib/schemas/metadata/Metadata.js.map +1 -1
- package/lib/transform.d.ts +2 -1
- package/lib/transform.js +11 -3
- package/lib/transform.js.map +1 -1
- package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
- package/lib/transformers/CallExpressionTransformer.js +2 -1
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/FileTransformer.js +18 -8
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/IProject.d.ts +3 -0
- package/lib/transformers/NodeTransformer.d.ts +1 -1
- package/lib/transformers/TransformerError.d.ts +12 -0
- package/lib/transformers/TransformerError.js +66 -0
- package/lib/transformers/TransformerError.js.map +1 -0
- package/lib/transformers/features/AssertTransformer.d.ts +1 -0
- package/lib/transformers/features/CreateAssertTransformer.d.ts +1 -0
- package/lib/transformers/features/CreateIsTransformer.d.ts +1 -0
- package/lib/transformers/features/CreateRandomTransformer.js +9 -4
- package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
- package/lib/transformers/features/CreateValidateTransformer.d.ts +1 -0
- package/lib/transformers/features/IsTransformer.d.ts +1 -0
- package/lib/transformers/features/RandomTransformer.js +9 -4
- package/lib/transformers/features/RandomTransformer.js.map +1 -1
- package/lib/transformers/features/ValidateTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonApplicationTransformer.js +79 -19
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonAssertParseTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonAssertStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateAssertParseTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateIsParseTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateValidateParseTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.d.ts +1 -0
- package/lib/transformers/features/json/JsonIsParseTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonIsStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonValidateParseTransformer.d.ts +1 -0
- package/lib/transformers/features/json/JsonValidateStringifyTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MetadataTransformer.js +13 -5
- package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscAssertCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscAssertPruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreatePruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscIsCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscIsPruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscLiteralsTransformer.js +9 -4
- package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscPruneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscValidateCloneTransformer.d.ts +1 -0
- package/lib/transformers/features/misc/MiscValidatePruneTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufIsDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufIsEncodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +9 -2
- package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
- package/lib/transformers/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +1 -0
- package/lib/transformers/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +1 -0
- package/lib/transformers/internal/GenericTransformer.js +17 -4
- package/lib/transformers/internal/GenericTransformer.js.map +1 -1
- package/lib/typings/ValidationPipe.d.ts +7 -0
- package/lib/typings/ValidationPipe.js +3 -0
- package/lib/typings/ValidationPipe.js.map +1 -0
- package/package.json +5 -1
- package/src/executable/TypiaGenerateWizard.ts +1 -1
- package/src/executable/TypiaSetupWizard.ts +1 -1
- package/src/executable/setup/PackageManager.ts +1 -1
- package/src/executable/setup/PluginConfigurator.ts +2 -2
- package/src/factories/ExpressionFactory.ts +2 -2
- package/src/factories/JsonMetadataFactory.ts +43 -0
- package/src/factories/LiteralFactory.ts +2 -1
- package/src/factories/MetadataCollection.ts +0 -5
- package/src/factories/MetadataCommentTagFactory.ts +130 -84
- package/src/factories/MetadataFactory.ts +175 -7
- package/src/factories/MetadataTypeTagFactory.ts +191 -141
- package/src/factories/ProtobufFactory.ts +92 -102
- package/src/factories/TypeFactory.ts +0 -5
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -5
- package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
- package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -5
- package/src/factories/internal/metadata/emplace_metadata_tuple.ts +12 -2
- package/src/factories/internal/metadata/explore_metadata.ts +5 -11
- package/src/factories/internal/metadata/iterate_metadata.ts +44 -24
- package/src/factories/internal/metadata/iterate_metadata_alias.ts +7 -2
- package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -2
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
- package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +21 -22
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +33 -17
- package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
- package/src/factories/internal/metadata/iterate_metadata_object.ts +2 -1
- package/src/factories/internal/metadata/iterate_metadata_resolve.ts +15 -12
- package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
- package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -2
- package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
- package/src/programmers/CheckerProgrammer.ts +8 -2
- package/src/programmers/FeatureProgrammer.ts +4 -1
- package/src/programmers/IsProgrammer.ts +1 -1
- package/src/programmers/RandomProgrammer.ts +18 -17
- package/src/programmers/TypiaProgrammer.ts +27 -2
- package/src/programmers/helpers/ProtobufUtil.ts +1 -1
- package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
- package/src/programmers/internal/application_schema.ts +5 -5
- package/src/programmers/json/JsonApplicationProgrammer.ts +6 -3
- package/src/programmers/json/JsonAssertParseProgrammer.ts +7 -2
- package/src/programmers/json/JsonIsParseProgrammer.ts +7 -2
- package/src/programmers/json/JsonStringifyProgrammer.ts +7 -37
- package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
- package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
- package/src/programmers/misc/MiscCloneProgrammer.ts +14 -11
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
- package/src/programmers/misc/MiscPruneProgrammer.ts +8 -2
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +17 -1
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -1
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +18 -1
- package/src/schemas/metadata/Metadata.ts +4 -4
- package/src/transform.ts +13 -5
- package/src/transformers/CallExpressionTransformer.ts +6 -3
- package/src/transformers/FileTransformer.ts +25 -13
- package/src/transformers/IProject.ts +3 -0
- package/src/transformers/NodeTransformer.ts +1 -1
- package/src/transformers/TransformerError.ts +55 -0
- package/src/transformers/features/CreateRandomTransformer.ts +11 -7
- package/src/transformers/features/RandomTransformer.ts +11 -7
- package/src/transformers/features/json/JsonApplicationTransformer.ts +39 -35
- package/src/transformers/features/misc/MetadataTransformer.ts +18 -10
- package/src/transformers/features/misc/MiscLiteralsTransformer.ts +11 -7
- package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +9 -7
- package/src/transformers/internal/GenericTransformer.ts +17 -10
- package/src/typings/ValidationPipe.ts +9 -0
- package/lib/programmers/internal/application_resolved.d.ts +0 -4
- package/lib/programmers/internal/application_resolved.js.map +0 -1
|
@@ -5,6 +5,10 @@ import { MetadataObject } from "../schemas/metadata/MetadataObject";
|
|
|
5
5
|
|
|
6
6
|
import { ProtobufUtil } from "../programmers/helpers/ProtobufUtil";
|
|
7
7
|
|
|
8
|
+
import { TransformerError } from "../transformers/TransformerError";
|
|
9
|
+
|
|
10
|
+
import { ValidationPipe } from "../typings/ValidationPipe";
|
|
11
|
+
|
|
8
12
|
import { Escaper } from "../utils/Escaper";
|
|
9
13
|
|
|
10
14
|
import { MetadataCollection } from "./MetadataCollection";
|
|
@@ -15,65 +19,68 @@ export namespace ProtobufFactory {
|
|
|
15
19
|
(method: string) =>
|
|
16
20
|
(checker: ts.TypeChecker) =>
|
|
17
21
|
(collection: MetadataCollection) =>
|
|
18
|
-
(type: ts.Type) => {
|
|
22
|
+
(type: ts.Type): Metadata => {
|
|
19
23
|
// COMPOSE METADATA WITH INDIVIDUAL VALIDATIONS
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
const result: ValidationPipe<Metadata, MetadataFactory.IError> =
|
|
25
|
+
MetadataFactory.analyze(checker)({
|
|
26
|
+
escape: false,
|
|
27
|
+
constant: true,
|
|
28
|
+
absorb: true,
|
|
29
|
+
validate,
|
|
30
|
+
})(collection)(type);
|
|
31
|
+
if (result.success === false)
|
|
32
|
+
throw TransformerError.from(`typia.protobuf.${method}`)(
|
|
33
|
+
result.errors,
|
|
34
|
+
);
|
|
35
|
+
return result.data;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const validate = (
|
|
39
|
+
meta: Metadata,
|
|
40
|
+
explore: MetadataFactory.IExplore,
|
|
41
|
+
): string[] => {
|
|
42
|
+
const errors: string[] = [];
|
|
43
|
+
const insert = (msg: string) => errors.push(msg);
|
|
26
44
|
|
|
27
|
-
|
|
45
|
+
if (explore.top === true) {
|
|
28
46
|
const onlyObject: boolean =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
47
|
+
meta.size() === 1 &&
|
|
48
|
+
meta.objects.length === 1 &&
|
|
49
|
+
meta.objects[0]!.properties.every((p) =>
|
|
32
50
|
p.key.isSoleLiteral(),
|
|
33
51
|
) &&
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
meta.isRequired() === true &&
|
|
53
|
+
meta.nullable === false;
|
|
36
54
|
if (onlyObject === false)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
method,
|
|
40
|
-
)} target type must be a sole and static object.`,
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
return top;
|
|
44
|
-
};
|
|
55
|
+
insert("target type must be a sole and static object type");
|
|
56
|
+
}
|
|
45
57
|
|
|
46
|
-
const validate = (method: string) => (meta: Metadata) => {
|
|
47
58
|
//----
|
|
48
59
|
// NOT SUPPORTED TYPES
|
|
49
60
|
//----
|
|
61
|
+
const noSupport = (msg: string) => insert(`does not support ${msg}`);
|
|
62
|
+
|
|
50
63
|
// PROHIBIT ANY TYPE
|
|
51
|
-
if (meta.any)
|
|
64
|
+
if (meta.any) noSupport("any type");
|
|
52
65
|
// PROHIBIT FUNCTIONAL TYPE
|
|
53
|
-
|
|
54
|
-
throw notSupportedError({ method })("functional type");
|
|
66
|
+
if (meta.functional) noSupport("functional type");
|
|
55
67
|
// PROHIBIT TUPLE TYPE
|
|
56
|
-
|
|
57
|
-
throw notSupportedError({ method })("tuple type");
|
|
68
|
+
if (meta.tuples.length) noSupport("tuple type");
|
|
58
69
|
// PROHIBIT SET TYPE
|
|
59
|
-
|
|
60
|
-
throw notSupportedError({ method })("Set type");
|
|
70
|
+
if (meta.sets.length) noSupport("Set type");
|
|
61
71
|
// NATIVE TYPE, BUT NOT Uint8Array
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
: `${banned[0]}. Use ${banned[1]} instead.`,
|
|
71
|
-
);
|
|
72
|
-
}
|
|
72
|
+
if (meta.natives.length)
|
|
73
|
+
for (const native of meta.natives) {
|
|
74
|
+
if (native === "Uint8Array") continue;
|
|
75
|
+
|
|
76
|
+
const instead = BANNED_NATIVE_TYPES.get(native);
|
|
77
|
+
if (instead === undefined) noSupport(`${native} type`);
|
|
78
|
+
else noSupport(`${native} type. Use ${instead} type instead.`);
|
|
79
|
+
}
|
|
73
80
|
//----
|
|
74
81
|
// ATOMIC CASES
|
|
75
82
|
//----
|
|
76
|
-
|
|
83
|
+
if (meta.atomics.length) {
|
|
77
84
|
const numbers = ProtobufUtil.getNumbers(meta);
|
|
78
85
|
const bigints = ProtobufUtil.getBigints(meta);
|
|
79
86
|
|
|
@@ -82,21 +89,21 @@ export namespace ProtobufFactory {
|
|
|
82
89
|
numbers.some((n) => n === type) &&
|
|
83
90
|
bigints.some((b) => b === type)
|
|
84
91
|
)
|
|
85
|
-
|
|
86
|
-
|
|
92
|
+
insert(
|
|
93
|
+
`tags.Type<"${type}"> cannot be used in both number and bigint types. Recommend to remove from number type`,
|
|
87
94
|
);
|
|
88
95
|
}
|
|
89
96
|
//----
|
|
90
97
|
// ARRRAY CASES
|
|
91
98
|
//----
|
|
92
99
|
// DO NOT ALLOW MULTI-DIMENTIONAL ARRAY
|
|
93
|
-
|
|
100
|
+
if (
|
|
94
101
|
meta.arrays.length &&
|
|
95
102
|
meta.arrays.some((array) => !!array.type.value.arrays.length)
|
|
96
103
|
)
|
|
97
|
-
|
|
104
|
+
noSupport("over two dimenstional array type");
|
|
98
105
|
// CHILD OF ARRAY TYPE MUST BE REQUIRED
|
|
99
|
-
|
|
106
|
+
if (
|
|
100
107
|
meta.arrays.length &&
|
|
101
108
|
meta.arrays.some(
|
|
102
109
|
(array) =>
|
|
@@ -104,15 +111,15 @@ export namespace ProtobufFactory {
|
|
|
104
111
|
array.type.value.nullable === true,
|
|
105
112
|
)
|
|
106
113
|
)
|
|
107
|
-
|
|
114
|
+
noSupport("optional type in array");
|
|
108
115
|
// UNION IN ARRAY
|
|
109
|
-
|
|
116
|
+
if (
|
|
110
117
|
meta.arrays.length &&
|
|
111
118
|
meta.arrays.some((a) => a.type.value.size() > 1)
|
|
112
119
|
)
|
|
113
|
-
|
|
120
|
+
noSupport("union type in array");
|
|
114
121
|
// DO DYNAMIC OBJECT IN ARRAY
|
|
115
|
-
|
|
122
|
+
if (
|
|
116
123
|
meta.arrays.length &&
|
|
117
124
|
meta.arrays.some(
|
|
118
125
|
(a) =>
|
|
@@ -123,21 +130,21 @@ export namespace ProtobufFactory {
|
|
|
123
130
|
)),
|
|
124
131
|
)
|
|
125
132
|
)
|
|
126
|
-
|
|
133
|
+
noSupport("dynamic object in array");
|
|
127
134
|
// UNION WITH ARRAY
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
if (meta.size() > 1 && meta.arrays.length)
|
|
136
|
+
noSupport("union type with array type");
|
|
130
137
|
//----
|
|
131
138
|
// OBJECT CASES
|
|
132
139
|
//----
|
|
133
140
|
// EMPTY PROPERTY
|
|
134
|
-
|
|
141
|
+
if (
|
|
135
142
|
meta.objects.length &&
|
|
136
143
|
meta.objects.some((obj) => obj.properties.length === 0)
|
|
137
144
|
)
|
|
138
|
-
|
|
145
|
+
noSupport("empty object type");
|
|
139
146
|
// MULTIPLE DYNAMIC KEY TYPED PROPERTIES
|
|
140
|
-
|
|
147
|
+
if (
|
|
141
148
|
meta.objects.length &&
|
|
142
149
|
meta.objects.some(
|
|
143
150
|
(obj) =>
|
|
@@ -145,11 +152,11 @@ export namespace ProtobufFactory {
|
|
|
145
152
|
.length > 1,
|
|
146
153
|
)
|
|
147
154
|
)
|
|
148
|
-
|
|
155
|
+
noSupport(
|
|
149
156
|
"object type with multiple dynamic key typed properties. Keep only one.",
|
|
150
157
|
);
|
|
151
158
|
// STATIC AND DYNAMIC PROPERTIES ARE COMPATIBLE
|
|
152
|
-
|
|
159
|
+
if (
|
|
153
160
|
meta.objects.length &&
|
|
154
161
|
meta.objects.some(
|
|
155
162
|
(obj) =>
|
|
@@ -157,43 +164,37 @@ export namespace ProtobufFactory {
|
|
|
157
164
|
obj.properties.some((p) => !p.key.isSoleLiteral()),
|
|
158
165
|
)
|
|
159
166
|
)
|
|
160
|
-
|
|
167
|
+
noSupport(
|
|
161
168
|
"object type with mixed static and dynamic key typed properties. Keep statics or dynamic only.",
|
|
162
169
|
);
|
|
163
170
|
// STATIC PROPERTY, BUT INVALID KEY NAME
|
|
164
|
-
|
|
171
|
+
if (
|
|
165
172
|
meta.objects.length &&
|
|
166
173
|
meta.objects.some((obj) =>
|
|
167
174
|
obj.properties.some(
|
|
168
175
|
(p) =>
|
|
169
|
-
p.key.isSoleLiteral() &&
|
|
170
|
-
|
|
176
|
+
p.key.isSoleLiteral() === true &&
|
|
177
|
+
Escaper.variable(p.key.getSoleLiteral()!) === false,
|
|
171
178
|
),
|
|
172
179
|
)
|
|
173
180
|
)
|
|
174
|
-
|
|
175
|
-
`object type with invalid static key name.`,
|
|
176
|
-
);
|
|
181
|
+
noSupport(`object type with invalid static key name.`);
|
|
177
182
|
// DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
|
|
178
|
-
|
|
183
|
+
if (
|
|
179
184
|
meta.objects.length &&
|
|
180
185
|
isDynamicObject(meta.objects[0]!) &&
|
|
181
186
|
meta.objects[0]!.properties.some((p) => !!p.value.arrays.length)
|
|
182
187
|
)
|
|
183
|
-
|
|
184
|
-
"dynamic object with array value type",
|
|
185
|
-
);
|
|
188
|
+
noSupport("dynamic object with array value type");
|
|
186
189
|
// UNION WITH DYNAMIC OBJECT
|
|
187
|
-
|
|
190
|
+
if (
|
|
188
191
|
meta.size() > 1 &&
|
|
189
192
|
meta.objects.length &&
|
|
190
193
|
isDynamicObject(meta.objects[0]!)
|
|
191
194
|
)
|
|
192
|
-
|
|
193
|
-
"union type with dynamic object type",
|
|
194
|
-
);
|
|
195
|
+
noSupport("union type with dynamic object type");
|
|
195
196
|
// UNION IN DYNAMIC PROPERTY VALUE
|
|
196
|
-
|
|
197
|
+
if (
|
|
197
198
|
meta.objects.length &&
|
|
198
199
|
meta.objects.some(
|
|
199
200
|
(obj) =>
|
|
@@ -201,59 +202,46 @@ export namespace ProtobufFactory {
|
|
|
201
202
|
obj.properties.some((p) => ProtobufUtil.isUnion(p.value)),
|
|
202
203
|
)
|
|
203
204
|
)
|
|
204
|
-
|
|
205
|
-
"union type in dynamic property",
|
|
206
|
-
);
|
|
205
|
+
noSupport("union type in dynamic property");
|
|
207
206
|
//----
|
|
208
207
|
// MAP CASES
|
|
209
208
|
//----
|
|
210
|
-
// KEY TYPE
|
|
211
|
-
|
|
209
|
+
// KEY TYPE IS UNION
|
|
210
|
+
if (
|
|
212
211
|
meta.maps.length &&
|
|
213
212
|
meta.maps.some((m) => ProtobufUtil.isUnion(m.key))
|
|
214
213
|
)
|
|
215
|
-
|
|
214
|
+
noSupport("union key typed map");
|
|
216
215
|
// KEY TYPE IS NOT ATOMIC
|
|
217
|
-
|
|
216
|
+
if (
|
|
218
217
|
meta.maps.length &&
|
|
219
218
|
meta.maps.some((m) => ProtobufUtil.getAtomics(m.key).length !== 1)
|
|
220
219
|
)
|
|
221
|
-
|
|
220
|
+
noSupport("non-atomic key typed map");
|
|
222
221
|
// MAP TYPE, BUT PROPERTY KEY TYPE IS OPTIONAL
|
|
223
|
-
|
|
222
|
+
if (
|
|
224
223
|
meta.maps.length &&
|
|
225
224
|
meta.maps.some(
|
|
226
225
|
(m) => m.key.isRequired() === false || m.key.nullable,
|
|
227
226
|
)
|
|
228
227
|
)
|
|
229
|
-
|
|
228
|
+
noSupport("optional key typed map");
|
|
230
229
|
// MAP TYPE, BUT VALUE TYPE IS ARRAY
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
meta.maps.some((m) => !!m.value.arrays.length)
|
|
234
|
-
)
|
|
235
|
-
throw notSupportedError({ method })(
|
|
236
|
-
"map type with array value type",
|
|
237
|
-
);
|
|
230
|
+
if (meta.maps.length && meta.maps.some((m) => !!m.value.arrays.length))
|
|
231
|
+
noSupport("map type with array value type");
|
|
238
232
|
// UNION WITH MAP
|
|
239
|
-
|
|
240
|
-
|
|
233
|
+
if (meta.size() > 1 && meta.maps.length)
|
|
234
|
+
noSupport("union type with map type");
|
|
241
235
|
// UNION IN MAP
|
|
242
|
-
|
|
236
|
+
if (
|
|
243
237
|
meta.maps.length &&
|
|
244
238
|
meta.maps.some((m) => ProtobufUtil.isUnion(m.value))
|
|
245
239
|
)
|
|
246
|
-
|
|
240
|
+
noSupport("union type in map value type");
|
|
241
|
+
return errors;
|
|
247
242
|
};
|
|
248
243
|
}
|
|
249
244
|
|
|
250
|
-
const prefix = (method: string) => `Error on ${method}():`;
|
|
251
|
-
|
|
252
|
-
const notSupportedError = (p: { method: string }) => (title: string) =>
|
|
253
|
-
new Error(
|
|
254
|
-
`${prefix(p.method)}: protocol buffer does not support ${title}.`,
|
|
255
|
-
);
|
|
256
|
-
|
|
257
245
|
const isDynamicObject = (obj: MetadataObject): boolean =>
|
|
258
246
|
obj.properties[0]!.key.isSoleLiteral() === false;
|
|
259
247
|
|
|
@@ -279,4 +267,6 @@ const BANNED_NATIVE_TYPES: Map<string, string | null> = new Map([
|
|
|
279
267
|
"ArrayBuffer",
|
|
280
268
|
"SharedArrayBuffer",
|
|
281
269
|
].map((name) => [name, "Uint8Array"] as const),
|
|
270
|
+
["WeakSet", "Array"],
|
|
271
|
+
["WeakMap", "Map"],
|
|
282
272
|
]);
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
3
|
export namespace TypeFactory {
|
|
4
|
-
export const resolve =
|
|
5
|
-
(checker: ts.TypeChecker) =>
|
|
6
|
-
(type: ts.Type): ts.Type | null =>
|
|
7
|
-
getReturnType(checker)(type)("toJSON");
|
|
8
|
-
|
|
9
4
|
export const isFunction = (type: ts.Type): boolean =>
|
|
10
5
|
getFunction(type) !== null;
|
|
11
6
|
|
|
@@ -13,7 +13,12 @@ export const emplace_metadata_alias =
|
|
|
13
13
|
(checker: ts.TypeChecker) =>
|
|
14
14
|
(options: MetadataFactory.IOptions) =>
|
|
15
15
|
(collection: MetadataCollection) =>
|
|
16
|
-
(
|
|
16
|
+
(errors: MetadataFactory.IError[]) =>
|
|
17
|
+
(
|
|
18
|
+
type: ts.Type,
|
|
19
|
+
nullable: boolean,
|
|
20
|
+
explore: MetadataFactory.IExplore,
|
|
21
|
+
): MetadataAlias => {
|
|
17
22
|
// CHECK EXISTENCE
|
|
18
23
|
const [alias, newbie, closure] = collection.emplaceAlias(
|
|
19
24
|
checker,
|
|
@@ -25,10 +30,12 @@ export const emplace_metadata_alias =
|
|
|
25
30
|
|
|
26
31
|
// CONSTRUCT VALUE TYPE
|
|
27
32
|
const value: Metadata = explore_metadata(checker)(options)(collection)(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
errors,
|
|
34
|
+
)(type, {
|
|
35
|
+
...explore,
|
|
36
|
+
escaped: false,
|
|
37
|
+
aliased: true,
|
|
38
|
+
});
|
|
32
39
|
closure(value);
|
|
33
40
|
return alias;
|
|
34
41
|
};
|
|
@@ -13,7 +13,12 @@ export const emplace_metadata_array_type =
|
|
|
13
13
|
(checker: ts.TypeChecker) =>
|
|
14
14
|
(options: MetadataFactory.IOptions) =>
|
|
15
15
|
(collection: MetadataCollection) =>
|
|
16
|
-
(
|
|
16
|
+
(errors: MetadataFactory.IError[]) =>
|
|
17
|
+
(
|
|
18
|
+
type: ts.Type,
|
|
19
|
+
nullable: boolean,
|
|
20
|
+
explore: MetadataFactory.IExplore,
|
|
21
|
+
): MetadataArrayType => {
|
|
17
22
|
// CHECK EXISTENCE
|
|
18
23
|
const [array, newbie, setValue] = collection.emplaceArray(
|
|
19
24
|
checker,
|
|
@@ -24,10 +29,12 @@ export const emplace_metadata_array_type =
|
|
|
24
29
|
|
|
25
30
|
// CONSTRUCT VALUE TYPE
|
|
26
31
|
const value: Metadata = explore_metadata(checker)(options)(collection)(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
errors,
|
|
33
|
+
)(type.getNumberIndexType()!, {
|
|
34
|
+
...explore,
|
|
35
|
+
escaped: false,
|
|
36
|
+
aliased: false,
|
|
37
|
+
});
|
|
31
38
|
setValue(value);
|
|
32
39
|
|
|
33
40
|
return array;
|
|
@@ -18,6 +18,7 @@ export const emplace_metadata_object =
|
|
|
18
18
|
(checker: ts.TypeChecker) =>
|
|
19
19
|
(options: MetadataFactory.IOptions) =>
|
|
20
20
|
(collection: MetadataCollection) =>
|
|
21
|
+
(errors: MetadataFactory.IError[]) =>
|
|
21
22
|
(parent: ts.Type, nullable: boolean): MetadataObject => {
|
|
22
23
|
// EMPLACE OBJECT
|
|
23
24
|
const [obj, newbie] = collection.emplace(checker, parent);
|
|
@@ -99,7 +100,14 @@ export const emplace_metadata_object =
|
|
|
99
100
|
const key: Metadata = MetadataHelper.literal_to_metadata(prop.name);
|
|
100
101
|
const value: Metadata = explore_metadata(checker)(options)(
|
|
101
102
|
collection,
|
|
102
|
-
)(type,
|
|
103
|
+
)(errors)(type, {
|
|
104
|
+
top: false,
|
|
105
|
+
object: obj,
|
|
106
|
+
property: prop.name,
|
|
107
|
+
nested: null,
|
|
108
|
+
escaped: false,
|
|
109
|
+
aliased: false,
|
|
110
|
+
});
|
|
103
111
|
|
|
104
112
|
// OPTIONAL, BUT CAN BE RQUIRED BY `Required<T>` TYPE
|
|
105
113
|
if (node?.questionToken) Writable(value).optional = true;
|
|
@@ -111,10 +119,17 @@ export const emplace_metadata_object =
|
|
|
111
119
|
//----
|
|
112
120
|
for (const index of checker.getIndexInfosOfType(parent)) {
|
|
113
121
|
// GET EXACT TYPE
|
|
114
|
-
const analyzer = (type: ts.Type) =>
|
|
115
|
-
explore_metadata(checker)(options)(collection)(type,
|
|
116
|
-
|
|
117
|
-
|
|
122
|
+
const analyzer = (type: ts.Type) => (property: {} | null) =>
|
|
123
|
+
explore_metadata(checker)(options)(collection)(errors)(type, {
|
|
124
|
+
top: false,
|
|
125
|
+
object: obj,
|
|
126
|
+
property,
|
|
127
|
+
nested: null,
|
|
128
|
+
escaped: false,
|
|
129
|
+
aliased: false,
|
|
130
|
+
});
|
|
131
|
+
const key: Metadata = analyzer(index.keyType)(null);
|
|
132
|
+
const value: Metadata = analyzer(index.type)({});
|
|
118
133
|
|
|
119
134
|
// INSERT WITH REQUIRED CONFIGURATION
|
|
120
135
|
insert(key)(value)(
|
|
@@ -15,7 +15,12 @@ export const emplace_metadata_tuple =
|
|
|
15
15
|
(checker: ts.TypeChecker) =>
|
|
16
16
|
(options: MetadataFactory.IOptions) =>
|
|
17
17
|
(collection: MetadataCollection) =>
|
|
18
|
-
(
|
|
18
|
+
(errors: MetadataFactory.IError[]) =>
|
|
19
|
+
(
|
|
20
|
+
type: ts.TupleType,
|
|
21
|
+
nullable: boolean,
|
|
22
|
+
explore: MetadataFactory.IExplore,
|
|
23
|
+
): MetadataTupleType => {
|
|
19
24
|
// CHECK EXISTENCE
|
|
20
25
|
const [tuple, newbie, closure] = collection.emplaceTuple(checker, type);
|
|
21
26
|
ArrayUtil.add(tuple.nullables, nullable);
|
|
@@ -31,7 +36,12 @@ export const emplace_metadata_tuple =
|
|
|
31
36
|
.map((elem, i) => {
|
|
32
37
|
const child: Metadata = explore_metadata(checker)(options)(
|
|
33
38
|
collection,
|
|
34
|
-
)(elem,
|
|
39
|
+
)(errors)(elem, {
|
|
40
|
+
...explore,
|
|
41
|
+
nested: tuple,
|
|
42
|
+
aliased: false,
|
|
43
|
+
escaped: false,
|
|
44
|
+
});
|
|
35
45
|
|
|
36
46
|
// CHECK OPTIONAL
|
|
37
47
|
const flag: ts.ElementFlags | undefined = flagList[i];
|
|
@@ -11,23 +11,17 @@ export const explore_metadata =
|
|
|
11
11
|
(checker: ts.TypeChecker) =>
|
|
12
12
|
(options: MetadataFactory.IOptions) =>
|
|
13
13
|
(collection: MetadataCollection) =>
|
|
14
|
-
(
|
|
15
|
-
|
|
16
|
-
parentResolved: boolean,
|
|
17
|
-
aliased: boolean = false,
|
|
18
|
-
): Metadata => {
|
|
14
|
+
(errors: MetadataFactory.IError[]) =>
|
|
15
|
+
(type: ts.Type | null, explore: MetadataFactory.IExplore): Metadata => {
|
|
19
16
|
// CONSTRUCT METADATA
|
|
20
|
-
const meta: Metadata = Metadata.initialize(
|
|
21
|
-
collection.entire_.add(meta);
|
|
22
|
-
|
|
17
|
+
const meta: Metadata = Metadata.initialize(explore.escaped);
|
|
23
18
|
if (type === null) return meta;
|
|
24
19
|
|
|
25
20
|
// ITERATE TYPESCRIPT TYPES
|
|
26
|
-
iterate_metadata(checker)(options)(collection)(
|
|
21
|
+
iterate_metadata(checker)(options)(collection)(errors)(
|
|
27
22
|
meta,
|
|
28
23
|
type,
|
|
29
|
-
|
|
30
|
-
aliased,
|
|
24
|
+
explore,
|
|
31
25
|
);
|
|
32
26
|
emend_metadata_atomics(meta);
|
|
33
27
|
if (meta.escaped) {
|
|
@@ -2,9 +2,9 @@ import ts from "typescript";
|
|
|
2
2
|
|
|
3
3
|
import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
4
4
|
|
|
5
|
-
// import { ArrayUtil } from "../../../utils/ArrayUtil";
|
|
6
5
|
import { MetadataCollection } from "../../MetadataCollection";
|
|
7
6
|
import { MetadataFactory } from "../../MetadataFactory";
|
|
7
|
+
import { TypeFactory } from "../../TypeFactory";
|
|
8
8
|
import { iterate_metadata_alias } from "./iterate_metadata_alias";
|
|
9
9
|
import { iterate_metadata_array } from "./iterate_metadata_array";
|
|
10
10
|
import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
|
|
@@ -24,39 +24,42 @@ export const iterate_metadata =
|
|
|
24
24
|
(checker: ts.TypeChecker) =>
|
|
25
25
|
(options: MetadataFactory.IOptions) =>
|
|
26
26
|
(collection: MetadataCollection) =>
|
|
27
|
+
(errors: MetadataFactory.IError[]) =>
|
|
27
28
|
(
|
|
28
29
|
meta: Metadata,
|
|
29
30
|
type: ts.Type,
|
|
30
|
-
|
|
31
|
-
aliased: boolean,
|
|
31
|
+
explore: MetadataFactory.IExplore,
|
|
32
32
|
): void => {
|
|
33
|
-
if (type.isTypeParameter() === true)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
if (type.isTypeParameter() === true) {
|
|
34
|
+
errors.push({
|
|
35
|
+
name: TypeFactory.getFullName(checker)(type),
|
|
36
|
+
explore: { ...explore },
|
|
37
|
+
messages: ["non-specified generic argument found."],
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
37
41
|
// CHECK SPECIAL CASES
|
|
38
|
-
if (
|
|
39
|
-
(aliased !== true &&
|
|
40
|
-
iterate_metadata_alias(checker)(options)(collection)(
|
|
42
|
+
else if (
|
|
43
|
+
(explore.aliased !== true &&
|
|
44
|
+
iterate_metadata_alias(checker)(options)(collection)(errors)(
|
|
41
45
|
meta,
|
|
42
46
|
type,
|
|
47
|
+
explore,
|
|
43
48
|
)) ||
|
|
44
|
-
iterate_metadata_intersection(checker)(options)(collection)(
|
|
49
|
+
iterate_metadata_intersection(checker)(options)(collection)(errors)(
|
|
45
50
|
meta,
|
|
46
51
|
type,
|
|
47
|
-
|
|
48
|
-
aliased,
|
|
52
|
+
explore,
|
|
49
53
|
) ||
|
|
50
|
-
iterate_metadata_union(checker)(options)(collection)(
|
|
54
|
+
iterate_metadata_union(checker)(options)(collection)(errors)(
|
|
51
55
|
meta,
|
|
52
56
|
type,
|
|
53
|
-
|
|
57
|
+
explore,
|
|
54
58
|
) ||
|
|
55
|
-
iterate_metadata_resolve(checker)(options)(collection)(
|
|
59
|
+
iterate_metadata_resolve(checker)(options)(collection)(errors)(
|
|
56
60
|
meta,
|
|
57
61
|
type,
|
|
58
|
-
|
|
59
|
-
aliased,
|
|
62
|
+
explore,
|
|
60
63
|
)
|
|
61
64
|
)
|
|
62
65
|
return;
|
|
@@ -64,18 +67,35 @@ export const iterate_metadata =
|
|
|
64
67
|
// ITERATE CASES
|
|
65
68
|
iterate_metadata_coalesce(meta, type) ||
|
|
66
69
|
iterate_metadata_constant(checker)(options)(meta, type) ||
|
|
67
|
-
iterate_metadata_template(checker)(options)(collection)(
|
|
70
|
+
iterate_metadata_template(checker)(options)(collection)(errors)(
|
|
68
71
|
meta,
|
|
69
72
|
type,
|
|
73
|
+
explore,
|
|
70
74
|
) ||
|
|
71
75
|
iterate_metadata_atomic(meta, type) ||
|
|
72
|
-
iterate_metadata_tuple(checker)(options)(collection)(
|
|
76
|
+
iterate_metadata_tuple(checker)(options)(collection)(errors)(
|
|
73
77
|
meta,
|
|
74
78
|
type as ts.TupleType,
|
|
79
|
+
explore,
|
|
80
|
+
) ||
|
|
81
|
+
iterate_metadata_array(checker)(options)(collection)(errors)(
|
|
82
|
+
meta,
|
|
83
|
+
type,
|
|
84
|
+
explore,
|
|
75
85
|
) ||
|
|
76
|
-
iterate_metadata_array(checker)(options)(collection)(meta, type) ||
|
|
77
86
|
iterate_metadata_native(checker)(meta, type) ||
|
|
78
|
-
iterate_metadata_map(checker)(options)(collection)(
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
iterate_metadata_map(checker)(options)(collection)(errors)(
|
|
88
|
+
meta,
|
|
89
|
+
type,
|
|
90
|
+
explore,
|
|
91
|
+
) ||
|
|
92
|
+
iterate_metadata_set(checker)(options)(collection)(errors)(
|
|
93
|
+
meta,
|
|
94
|
+
type,
|
|
95
|
+
explore,
|
|
96
|
+
) ||
|
|
97
|
+
iterate_metadata_object(checker)(options)(collection)(errors)(
|
|
98
|
+
meta,
|
|
99
|
+
type,
|
|
100
|
+
);
|
|
81
101
|
};
|
|
@@ -13,7 +13,12 @@ export const iterate_metadata_alias =
|
|
|
13
13
|
(checker: ts.TypeChecker) =>
|
|
14
14
|
(options: MetadataFactory.IOptions) =>
|
|
15
15
|
(collection: MetadataCollection) =>
|
|
16
|
-
(
|
|
16
|
+
(errors: MetadataFactory.IError[]) =>
|
|
17
|
+
(
|
|
18
|
+
meta: Metadata,
|
|
19
|
+
type: ts.Type,
|
|
20
|
+
explore: MetadataFactory.IExplore,
|
|
21
|
+
): boolean => {
|
|
17
22
|
if (options.absorb !== false || type.aliasSymbol === undefined)
|
|
18
23
|
return false;
|
|
19
24
|
|
|
@@ -24,7 +29,7 @@ export const iterate_metadata_alias =
|
|
|
24
29
|
// CONSTRUCT DEFINITION
|
|
25
30
|
const alias: MetadataAlias = emplace_metadata_alias(checker)(options)(
|
|
26
31
|
collection,
|
|
27
|
-
)(type, meta.nullable);
|
|
32
|
+
)(errors)(type, meta.nullable, explore);
|
|
28
33
|
ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
|
|
29
34
|
return true;
|
|
30
35
|
};
|