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,7 +5,7 @@ import { IJsonComponents, IJsonSchema } from "../../module";
|
|
|
5
5
|
import { JsonApplicationProgrammer } from "../json/JsonApplicationProgrammer";
|
|
6
6
|
import { application_schema } from "./application_schema";
|
|
7
7
|
|
|
8
|
-
export const
|
|
8
|
+
export const application_escaped =
|
|
9
9
|
(options: JsonApplicationProgrammer.IOptions) =>
|
|
10
10
|
<BlockNever extends boolean>(blockNever: BlockNever) =>
|
|
11
11
|
(components: IJsonComponents) =>
|
|
@@ -9,10 +9,10 @@ import { application_alias } from "./application_alias";
|
|
|
9
9
|
import { application_array } from "./application_array";
|
|
10
10
|
import { application_boolean } from "./application_boolean";
|
|
11
11
|
import { application_constant } from "./application_constant";
|
|
12
|
+
import { application_escaped } from "./application_escaped";
|
|
12
13
|
import { application_native } from "./application_native";
|
|
13
14
|
import { application_number } from "./application_number";
|
|
14
15
|
import { application_object } from "./application_object";
|
|
15
|
-
import { application_resolved } from "./application_resolved";
|
|
16
16
|
import { application_string } from "./application_string";
|
|
17
17
|
import { application_templates } from "./application_templates";
|
|
18
18
|
import { application_tuple } from "./application_tuple";
|
|
@@ -61,7 +61,7 @@ export const application_schema =
|
|
|
61
61
|
// toJSON() METHOD
|
|
62
62
|
if (meta.escaped !== null)
|
|
63
63
|
union.push(
|
|
64
|
-
...
|
|
64
|
+
...application_escaped(options)(blockNever)(components)(
|
|
65
65
|
meta.escaped,
|
|
66
66
|
)(attribute),
|
|
67
67
|
);
|
|
@@ -70,7 +70,7 @@ export const application_schema =
|
|
|
70
70
|
if (meta.templates.length && AtomicPredicator.template(meta))
|
|
71
71
|
insert(application_templates(meta)(attribute));
|
|
72
72
|
for (const constant of meta.constants)
|
|
73
|
-
if (constant.type === "bigint") throw new
|
|
73
|
+
if (constant.type === "bigint") throw new TypeError(NO_BIGINT);
|
|
74
74
|
else if (
|
|
75
75
|
(constant.type === "string" && meta.templates.length) ||
|
|
76
76
|
AtomicPredicator.constant(meta)(constant.type) === false
|
|
@@ -78,7 +78,7 @@ export const application_schema =
|
|
|
78
78
|
continue;
|
|
79
79
|
else insert(application_constant(constant)(attribute));
|
|
80
80
|
for (const a of meta.atomics)
|
|
81
|
-
if (a.type === "bigint") throw new
|
|
81
|
+
if (a.type === "bigint") throw new TypeError(NO_BIGINT);
|
|
82
82
|
else if (a.type === "boolean")
|
|
83
83
|
insert(application_boolean(attribute));
|
|
84
84
|
else if (a.type === "number")
|
|
@@ -103,7 +103,7 @@ export const application_schema =
|
|
|
103
103
|
if (AtomicPredicator.native(native)) {
|
|
104
104
|
const type: string = native.toLowerCase();
|
|
105
105
|
if (meta.atomics.some((a) => a.type === type)) continue;
|
|
106
|
-
else if (type === "bigint") throw new
|
|
106
|
+
else if (type === "bigint") throw new TypeError(NO_BIGINT);
|
|
107
107
|
else if (type === "boolean")
|
|
108
108
|
insert(application_boolean(attribute));
|
|
109
109
|
else if (type === "number")
|
|
@@ -3,6 +3,8 @@ import { IJsonComponents } from "../../schemas/json/IJsonComponents";
|
|
|
3
3
|
import { IJsonSchema } from "../../schemas/json/IJsonSchema";
|
|
4
4
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
5
5
|
|
|
6
|
+
import { TransformerError } from "../../transformers/TransformerError";
|
|
7
|
+
|
|
6
8
|
import { application_schema } from "../internal/application_schema";
|
|
7
9
|
|
|
8
10
|
export namespace JsonApplicationProgrammer {
|
|
@@ -35,9 +37,10 @@ export namespace JsonApplicationProgrammer {
|
|
|
35
37
|
schemas: metadatas.map((meta, i) => {
|
|
36
38
|
const schema: IJsonSchema | null = generator(meta)({});
|
|
37
39
|
if (schema === null)
|
|
38
|
-
throw new
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
throw new TransformerError({
|
|
41
|
+
code: "typia.json.application",
|
|
42
|
+
message: `invalid type on argument - (${meta.getName()}, ${i})`,
|
|
43
|
+
});
|
|
41
44
|
return schema;
|
|
42
45
|
}),
|
|
43
46
|
components,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
3
|
import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
4
|
+
import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
|
|
4
5
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
5
6
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
6
7
|
|
|
@@ -12,8 +13,11 @@ export namespace JsonAssertParseProgrammer {
|
|
|
12
13
|
export const write =
|
|
13
14
|
(project: IProject) =>
|
|
14
15
|
(modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type, name?: string) =>
|
|
16
|
-
|
|
16
|
+
(type: ts.Type, name?: string): ts.ArrowFunction => {
|
|
17
|
+
JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
|
|
18
|
+
project.checker,
|
|
19
|
+
)(type);
|
|
20
|
+
return ts.factory.createArrowFunction(
|
|
17
21
|
undefined,
|
|
18
22
|
undefined,
|
|
19
23
|
[
|
|
@@ -63,4 +67,5 @@ export namespace JsonAssertParseProgrammer {
|
|
|
63
67
|
),
|
|
64
68
|
]),
|
|
65
69
|
);
|
|
70
|
+
};
|
|
66
71
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
3
|
import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
4
|
+
import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
|
|
4
5
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
5
6
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
6
7
|
|
|
@@ -12,8 +13,11 @@ export namespace JsonIsParseProgrammer {
|
|
|
12
13
|
export const write =
|
|
13
14
|
(project: IProject) =>
|
|
14
15
|
(modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type, name?: string) =>
|
|
16
|
-
|
|
16
|
+
(type: ts.Type, name?: string): ts.ArrowFunction => {
|
|
17
|
+
JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
|
|
18
|
+
project.checker,
|
|
19
|
+
)(type);
|
|
20
|
+
return ts.factory.createArrowFunction(
|
|
17
21
|
undefined,
|
|
18
22
|
undefined,
|
|
19
23
|
[
|
|
@@ -69,4 +73,5 @@ export namespace JsonIsParseProgrammer {
|
|
|
69
73
|
),
|
|
70
74
|
]),
|
|
71
75
|
);
|
|
76
|
+
};
|
|
72
77
|
}
|
|
@@ -2,8 +2,8 @@ import ts from "typescript";
|
|
|
2
2
|
|
|
3
3
|
import { ExpressionFactory } from "../../factories/ExpressionFactory";
|
|
4
4
|
import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
5
|
+
import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
|
|
5
6
|
import { MetadataCollection } from "../../factories/MetadataCollection";
|
|
6
|
-
import { MetadataFactory } from "../../factories/MetadataFactory";
|
|
7
7
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
8
8
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
9
9
|
import { ValueFactory } from "../../factories/ValueFactory";
|
|
@@ -315,12 +315,7 @@ export namespace JsonStringifyProgrammer {
|
|
|
315
315
|
});
|
|
316
316
|
|
|
317
317
|
// TUPLES
|
|
318
|
-
for (const tuple of meta.tuples)
|
|
319
|
-
for (const child of tuple.type.elements)
|
|
320
|
-
if (StringifyPredicator.undefindable(meta))
|
|
321
|
-
throw new Error(
|
|
322
|
-
`Error on typia.json.stringify(): tuple cannot contain undefined value - (${child.getName()}).`,
|
|
323
|
-
);
|
|
318
|
+
for (const tuple of meta.tuples)
|
|
324
319
|
unions.push({
|
|
325
320
|
type: "tuple",
|
|
326
321
|
is: () =>
|
|
@@ -340,15 +335,9 @@ export namespace JsonStringifyProgrammer {
|
|
|
340
335
|
explore,
|
|
341
336
|
),
|
|
342
337
|
});
|
|
343
|
-
}
|
|
344
338
|
|
|
345
339
|
// ARRAYS
|
|
346
340
|
if (meta.arrays.length) {
|
|
347
|
-
for (const child of meta.arrays)
|
|
348
|
-
if (StringifyPredicator.undefindable(child.type.value))
|
|
349
|
-
throw new Error(
|
|
350
|
-
`Error on typia.json.stringify(): array cannot contain undefined value (${child.type.value.getName()}).`,
|
|
351
|
-
);
|
|
352
341
|
const value: () => ts.Expression =
|
|
353
342
|
meta.arrays.length === 1
|
|
354
343
|
? () =>
|
|
@@ -935,25 +924,11 @@ export namespace JsonStringifyProgrammer {
|
|
|
935
924
|
|
|
936
925
|
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
937
926
|
({ checker }) =>
|
|
938
|
-
(
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
absorb: true,
|
|
944
|
-
validate: (meta) => {
|
|
945
|
-
if (meta.atomics.find((a) => a.type === "bigint"))
|
|
946
|
-
throw new Error(NO_BIGINT);
|
|
947
|
-
else if (
|
|
948
|
-
meta.arrays.some(
|
|
949
|
-
(array) => array.type.value.isRequired() === false,
|
|
950
|
-
)
|
|
951
|
-
)
|
|
952
|
-
throw new Error(NO_UNDEFINED_IN_ARRAY);
|
|
953
|
-
},
|
|
954
|
-
})(collection)(type);
|
|
955
|
-
return [collection, meta];
|
|
956
|
-
};
|
|
927
|
+
(importer) =>
|
|
928
|
+
(type) =>
|
|
929
|
+
JsonMetadataFactory.analyze(`typia.json.${importer.method}`)(
|
|
930
|
+
checker,
|
|
931
|
+
)(type);
|
|
957
932
|
|
|
958
933
|
const create_throw_error =
|
|
959
934
|
(importer: FunctionImporter) =>
|
|
@@ -987,8 +962,3 @@ interface IUnion {
|
|
|
987
962
|
is: () => ts.Expression;
|
|
988
963
|
value: () => ts.Expression;
|
|
989
964
|
}
|
|
990
|
-
|
|
991
|
-
const NO_BIGINT =
|
|
992
|
-
"Error on typia.json.stringify(): does not allow bigint type.";
|
|
993
|
-
const NO_UNDEFINED_IN_ARRAY =
|
|
994
|
-
"Error on typia.json.stringify(): does not allow undefined type in array.";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
3
|
import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
4
|
+
import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
|
|
4
5
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
5
6
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
6
7
|
|
|
@@ -12,8 +13,11 @@ export namespace JsonValidateParseProgrammer {
|
|
|
12
13
|
export const write =
|
|
13
14
|
(project: IProject) =>
|
|
14
15
|
(modulo: ts.LeftHandSideExpression) =>
|
|
15
|
-
(type: ts.Type, name?: string) =>
|
|
16
|
-
|
|
16
|
+
(type: ts.Type, name?: string): ts.ArrowFunction => {
|
|
17
|
+
JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
|
|
18
|
+
project.checker,
|
|
19
|
+
)(type);
|
|
20
|
+
return ts.factory.createArrowFunction(
|
|
17
21
|
undefined,
|
|
18
22
|
undefined,
|
|
19
23
|
[
|
|
@@ -60,4 +64,5 @@ export namespace JsonValidateParseProgrammer {
|
|
|
60
64
|
),
|
|
61
65
|
]),
|
|
62
66
|
);
|
|
67
|
+
};
|
|
63
68
|
}
|
|
@@ -13,7 +13,7 @@ export namespace JsonValidateStringifyProgrammer {
|
|
|
13
13
|
export const write =
|
|
14
14
|
(project: IProject) =>
|
|
15
15
|
(modulo: ts.LeftHandSideExpression) =>
|
|
16
|
-
(type: ts.Type, name?: string) =>
|
|
16
|
+
(type: ts.Type, name?: string): ts.ArrowFunction =>
|
|
17
17
|
ts.factory.createArrowFunction(
|
|
18
18
|
undefined,
|
|
19
19
|
undefined,
|
|
@@ -13,6 +13,7 @@ import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
|
|
|
13
13
|
import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
|
|
14
14
|
|
|
15
15
|
import { IProject } from "../../transformers/IProject";
|
|
16
|
+
import { TransformerError } from "../../transformers/TransformerError";
|
|
16
17
|
|
|
17
18
|
import { FeatureProgrammer } from "../FeatureProgrammer";
|
|
18
19
|
import { IsProgrammer } from "../IsProgrammer";
|
|
@@ -696,7 +697,7 @@ export namespace MiscCloneProgrammer {
|
|
|
696
697
|
prefix: PREFIX,
|
|
697
698
|
trace: false,
|
|
698
699
|
path: false,
|
|
699
|
-
initializer
|
|
700
|
+
initializer,
|
|
700
701
|
decoder: () => decode(project)(config)(importer),
|
|
701
702
|
objector: {
|
|
702
703
|
checker: () => IsProgrammer.decode(project)(importer),
|
|
@@ -720,27 +721,29 @@ export namespace MiscCloneProgrammer {
|
|
|
720
721
|
return config;
|
|
721
722
|
};
|
|
722
723
|
|
|
723
|
-
const initializer =
|
|
724
|
-
(method: string): FeatureProgrammer.IConfig["initializer"] =>
|
|
724
|
+
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
725
725
|
({ checker }) =>
|
|
726
|
+
(importer) =>
|
|
726
727
|
(type) => {
|
|
727
728
|
const collection = new MetadataCollection();
|
|
728
|
-
const
|
|
729
|
+
const result = MetadataFactory.analyze(checker)({
|
|
729
730
|
escape: false,
|
|
730
731
|
constant: true,
|
|
731
732
|
absorb: true,
|
|
732
733
|
validate: (meta) => {
|
|
734
|
+
const output: string[] = [];
|
|
733
735
|
if (meta.natives.some((n) => n === "WeakSet"))
|
|
734
|
-
|
|
735
|
-
`Error on ${method}(): WeakSet is not supported.`,
|
|
736
|
-
);
|
|
736
|
+
output.push("unable to clone WeakSet");
|
|
737
737
|
else if (meta.natives.some((n) => n === "WeakMap"))
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
);
|
|
738
|
+
output.push("unable to clone WeakMap");
|
|
739
|
+
return output;
|
|
741
740
|
},
|
|
742
741
|
})(collection)(type);
|
|
743
|
-
|
|
742
|
+
if (result.success === false)
|
|
743
|
+
throw TransformerError.from(`typia.misc.${importer.method}`)(
|
|
744
|
+
result.errors,
|
|
745
|
+
);
|
|
746
|
+
return [collection, result.data];
|
|
744
747
|
};
|
|
745
748
|
|
|
746
749
|
const create_throw_error =
|
|
@@ -7,6 +7,7 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
|
|
|
7
7
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
8
8
|
|
|
9
9
|
import { IProject } from "../../transformers/IProject";
|
|
10
|
+
import { TransformerError } from "../../transformers/TransformerError";
|
|
10
11
|
|
|
11
12
|
import { Atomic } from "../../typings/Atomic";
|
|
12
13
|
|
|
@@ -14,7 +15,7 @@ import { ArrayUtil } from "../../utils/ArrayUtil";
|
|
|
14
15
|
|
|
15
16
|
export namespace MiscLiteralsProgrammer {
|
|
16
17
|
export const write = (project: IProject) => (type: ts.Type) => {
|
|
17
|
-
const
|
|
18
|
+
const result = MetadataFactory.analyze(project.checker)({
|
|
18
19
|
escape: true,
|
|
19
20
|
constant: true,
|
|
20
21
|
absorb: true,
|
|
@@ -24,11 +25,15 @@ export namespace MiscLiteralsProgrammer {
|
|
|
24
25
|
.map((c) => c.values.length)
|
|
25
26
|
.reduce((a, b) => a + b, 0) +
|
|
26
27
|
meta.atomics.filter((a) => a.type === "boolean").length;
|
|
27
|
-
if (0 === length)
|
|
28
|
-
else if (meta.size() !== length)
|
|
29
|
-
|
|
28
|
+
if (0 === length) return [ErrorMessages.NO];
|
|
29
|
+
else if (meta.size() !== length) return [ErrorMessages.ONLY];
|
|
30
|
+
return [];
|
|
30
31
|
},
|
|
31
32
|
})(new MetadataCollection())(type);
|
|
33
|
+
if (result.success === false)
|
|
34
|
+
throw TransformerError.from(`typia.misc.literals`)(result.errors);
|
|
35
|
+
|
|
36
|
+
const meta: Metadata = result.data;
|
|
32
37
|
const values: Set<Atomic.Type | null> = new Set([
|
|
33
38
|
...ArrayUtil.flat<Atomic.Type>(meta.constants.map((c) => c.values)),
|
|
34
39
|
...(meta.atomics.filter((a) => a.type === "boolean").length
|
|
@@ -59,6 +64,6 @@ export namespace MiscLiteralsProgrammer {
|
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
enum ErrorMessages {
|
|
62
|
-
NO = "
|
|
63
|
-
ONLY = "
|
|
67
|
+
NO = "no constant literal type found.",
|
|
68
|
+
ONLY = "only constant literal types are allowed.",
|
|
64
69
|
}
|
|
@@ -13,6 +13,7 @@ import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
|
|
|
13
13
|
import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
|
|
14
14
|
|
|
15
15
|
import { IProject } from "../../transformers/IProject";
|
|
16
|
+
import { TransformerError } from "../../transformers/TransformerError";
|
|
16
17
|
|
|
17
18
|
import { FeatureProgrammer } from "../FeatureProgrammer";
|
|
18
19
|
import { IsProgrammer } from "../IsProgrammer";
|
|
@@ -506,14 +507,19 @@ export namespace MiscPruneProgrammer {
|
|
|
506
507
|
|
|
507
508
|
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
508
509
|
({ checker }) =>
|
|
510
|
+
(importer) =>
|
|
509
511
|
(type) => {
|
|
510
512
|
const collection = new MetadataCollection();
|
|
511
|
-
const
|
|
513
|
+
const result = MetadataFactory.analyze(checker)({
|
|
512
514
|
escape: false,
|
|
513
515
|
constant: true,
|
|
514
516
|
absorb: true,
|
|
515
517
|
})(collection)(type);
|
|
516
|
-
|
|
518
|
+
if (result.success === false)
|
|
519
|
+
throw TransformerError.from(`typia.misc.${importer.method}`)(
|
|
520
|
+
result.errors,
|
|
521
|
+
);
|
|
522
|
+
return [collection, result.data];
|
|
517
523
|
};
|
|
518
524
|
|
|
519
525
|
const create_throw_error =
|
|
@@ -10,6 +10,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
|
|
|
10
10
|
|
|
11
11
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
12
12
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
13
|
+
import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
|
|
13
14
|
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
14
15
|
import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
|
|
15
16
|
|
|
@@ -529,7 +530,22 @@ export namespace ProtobufDecodeProgrammer {
|
|
|
529
530
|
ts.factory.createToken(ts.SyntaxKind.EqualsToken),
|
|
530
531
|
ts.factory.createIdentifier("entry.value"),
|
|
531
532
|
),
|
|
532
|
-
})(
|
|
533
|
+
})(
|
|
534
|
+
MetadataProperty.create({
|
|
535
|
+
...top,
|
|
536
|
+
key: (() => {
|
|
537
|
+
const key: Metadata = Metadata.initialize();
|
|
538
|
+
key.atomics.push(
|
|
539
|
+
MetadataAtomic.create({
|
|
540
|
+
type: "string",
|
|
541
|
+
tags: [],
|
|
542
|
+
}),
|
|
543
|
+
);
|
|
544
|
+
return key;
|
|
545
|
+
})(),
|
|
546
|
+
}),
|
|
547
|
+
required,
|
|
548
|
+
);
|
|
533
549
|
};
|
|
534
550
|
|
|
535
551
|
const decode_map =
|
|
@@ -10,6 +10,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
|
|
|
10
10
|
|
|
11
11
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
12
12
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
13
|
+
import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
|
|
13
14
|
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
14
15
|
import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
|
|
15
16
|
|
|
@@ -364,6 +365,7 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
364
365
|
});
|
|
365
366
|
|
|
366
367
|
// RETURNS
|
|
368
|
+
// if (unions.length === 0) console.log(meta.getName());
|
|
367
369
|
if (unions.length === 1) return wrapper(unions[0]!.value(index));
|
|
368
370
|
else
|
|
369
371
|
return wrapper(
|
|
@@ -471,7 +473,19 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
471
473
|
[],
|
|
472
474
|
[input],
|
|
473
475
|
),
|
|
474
|
-
|
|
476
|
+
MetadataProperty.create({
|
|
477
|
+
...top,
|
|
478
|
+
key: (() => {
|
|
479
|
+
const key: Metadata = Metadata.initialize();
|
|
480
|
+
key.atomics.push(
|
|
481
|
+
MetadataAtomic.create({
|
|
482
|
+
type: "string",
|
|
483
|
+
tags: [],
|
|
484
|
+
}),
|
|
485
|
+
);
|
|
486
|
+
return key;
|
|
487
|
+
})(),
|
|
488
|
+
}),
|
|
475
489
|
explore,
|
|
476
490
|
);
|
|
477
491
|
return ts.factory.createBlock(
|
|
@@ -4,7 +4,9 @@ import { MetadataCollection } from "../../factories/MetadataCollection";
|
|
|
4
4
|
import { ProtobufFactory } from "../../factories/ProtobufFactory";
|
|
5
5
|
|
|
6
6
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
7
|
+
import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
|
|
7
8
|
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
9
|
+
import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
|
|
8
10
|
|
|
9
11
|
import { IProject } from "../../transformers/IProject";
|
|
10
12
|
|
|
@@ -111,7 +113,22 @@ export namespace ProtobufMessageProgrammer {
|
|
|
111
113
|
for (const obj of meta.objects)
|
|
112
114
|
elements.add(
|
|
113
115
|
is_dynamic_object(obj)
|
|
114
|
-
? decode_map(ptr)(
|
|
116
|
+
? decode_map(ptr)(
|
|
117
|
+
MetadataProperty.create({
|
|
118
|
+
...obj.properties[0]!,
|
|
119
|
+
key: (() => {
|
|
120
|
+
const key: Metadata =
|
|
121
|
+
Metadata.initialize();
|
|
122
|
+
key.atomics.push(
|
|
123
|
+
MetadataAtomic.create({
|
|
124
|
+
type: "string",
|
|
125
|
+
tags: [],
|
|
126
|
+
}),
|
|
127
|
+
);
|
|
128
|
+
return key;
|
|
129
|
+
})(),
|
|
130
|
+
}),
|
|
131
|
+
)
|
|
115
132
|
: NameEncoder.encode(obj.name),
|
|
116
133
|
);
|
|
117
134
|
for (const map of meta.maps) elements.add(decode_map(ptr)(map));
|
|
@@ -236,7 +236,7 @@ export class Metadata {
|
|
|
236
236
|
arrays: meta.arrays.map((ref) => {
|
|
237
237
|
const type = dict.arrays.get(ref.name);
|
|
238
238
|
if (type === undefined)
|
|
239
|
-
throw new
|
|
239
|
+
throw new RangeError(
|
|
240
240
|
`Error on Metadata.from(): failed to find array "${ref.name}".`,
|
|
241
241
|
);
|
|
242
242
|
return MetadataArray.create({
|
|
@@ -247,7 +247,7 @@ export class Metadata {
|
|
|
247
247
|
tuples: meta.tuples.map((t) => {
|
|
248
248
|
const type = dict.tuples.get(t.name);
|
|
249
249
|
if (type === undefined)
|
|
250
|
-
throw new
|
|
250
|
+
throw new RangeError(
|
|
251
251
|
`Error on Metadata.from(): failed to find tuple "${t.name}".`,
|
|
252
252
|
);
|
|
253
253
|
return MetadataTuple.create({
|
|
@@ -258,7 +258,7 @@ export class Metadata {
|
|
|
258
258
|
objects: meta.objects.map((name) => {
|
|
259
259
|
const found = dict.objects.get(name);
|
|
260
260
|
if (found === undefined)
|
|
261
|
-
throw new
|
|
261
|
+
throw new RangeError(
|
|
262
262
|
`Error on Metadata.from(): failed to find object "${name}".`,
|
|
263
263
|
);
|
|
264
264
|
return found;
|
|
@@ -266,7 +266,7 @@ export class Metadata {
|
|
|
266
266
|
aliases: meta.aliases.map((alias) => {
|
|
267
267
|
const found = dict.aliases.get(alias);
|
|
268
268
|
if (found === undefined)
|
|
269
|
-
throw new
|
|
269
|
+
throw new RangeError(
|
|
270
270
|
`Error on Metadata.from(): failed to find alias "${alias}".`,
|
|
271
271
|
);
|
|
272
272
|
return found;
|
package/src/transform.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
3
|
import { FileTransformer } from "./transformers/FileTransformer";
|
|
4
|
+
import { IProject } from "./transformers/IProject";
|
|
4
5
|
import { ITransformOptions } from "./transformers/ITransformOptions";
|
|
5
6
|
|
|
6
7
|
export const transform = (
|
|
7
8
|
program: ts.Program,
|
|
8
|
-
options
|
|
9
|
+
options: ITransformOptions | undefined,
|
|
10
|
+
extras: IProject["extras"],
|
|
9
11
|
): ts.TransformerFactory<ts.SourceFile> => {
|
|
10
12
|
const compilerOptions: ts.CompilerOptions = program.getCompilerOptions();
|
|
11
13
|
const strict: boolean =
|
|
@@ -13,15 +15,21 @@ export const transform = (
|
|
|
13
15
|
? !!compilerOptions.strictNullChecks
|
|
14
16
|
: !!compilerOptions.strict;
|
|
15
17
|
if (strict === false)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
+
});
|
|
19
26
|
return FileTransformer.transform({
|
|
20
27
|
program,
|
|
21
28
|
compilerOptions,
|
|
22
29
|
checker: program.getTypeChecker(),
|
|
23
30
|
printer: ts.createPrinter(),
|
|
24
|
-
options: options
|
|
31
|
+
options: options ?? {},
|
|
32
|
+
extras,
|
|
25
33
|
});
|
|
26
34
|
};
|
|
27
35
|
export default transform;
|
|
@@ -64,7 +64,7 @@ import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufV
|
|
|
64
64
|
export namespace CallExpressionTransformer {
|
|
65
65
|
export const transform =
|
|
66
66
|
(project: IProject) =>
|
|
67
|
-
(expression: ts.CallExpression): ts.Expression => {
|
|
67
|
+
(expression: ts.CallExpression): ts.Expression | null => {
|
|
68
68
|
//----
|
|
69
69
|
// VALIDATIONS
|
|
70
70
|
//----
|
|
@@ -95,7 +95,10 @@ export namespace CallExpressionTransformer {
|
|
|
95
95
|
if (functor === undefined) return expression;
|
|
96
96
|
|
|
97
97
|
// RETURNS WITH TRANSFORMATION
|
|
98
|
-
|
|
98
|
+
const result: ts.Expression | null = functor()(project)(
|
|
99
|
+
expression.expression,
|
|
100
|
+
)(expression);
|
|
101
|
+
return result ?? expression;
|
|
99
102
|
};
|
|
100
103
|
|
|
101
104
|
const isTarget = (location: string): boolean => {
|
|
@@ -126,7 +129,7 @@ type Task = (
|
|
|
126
129
|
project: IProject,
|
|
127
130
|
) => (
|
|
128
131
|
modulo: ts.LeftHandSideExpression,
|
|
129
|
-
) => (expression: ts.CallExpression) => ts.Expression;
|
|
132
|
+
) => (expression: ts.CallExpression) => ts.Expression | null;
|
|
130
133
|
|
|
131
134
|
const FUNCTORS: Record<string, Record<string, () => Task>> = {
|
|
132
135
|
module: {
|