typia 5.0.0-dev.20230824 → 5.0.0-dev.20230828
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/lib/IRandomGenerator.d.ts +4 -3
- 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.d.ts +1 -1
- package/lib/factories/ExpressionFactory.js +3 -3
- 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 +6 -2
- package/lib/factories/LiteralFactory.js.map +1 -1
- package/lib/factories/MetadataCollection.js +0 -2
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataCommentTagFactory.js +543 -0
- package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
- package/lib/factories/MetadataFactory.d.ts +22 -2
- package/lib/factories/MetadataFactory.js +221 -17
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/MetadataTypeTagFactory.d.ts +7 -0
- package/lib/factories/MetadataTypeTagFactory.js +280 -0
- package/lib/factories/MetadataTypeTagFactory.js.map +1 -0
- package/lib/factories/NumericRangeFactory.d.ts +6 -0
- package/lib/factories/NumericRangeFactory.js +34 -0
- package/lib/factories/NumericRangeFactory.js.map +1 -0
- package/lib/factories/ProtobufFactory.js +109 -73
- 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/emend_metadata_atomics.js +7 -1
- package/lib/factories/internal/metadata/emend_metadata_atomics.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 -19
- 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 -85
- 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_atomic.js +2 -1
- package/lib/factories/internal/metadata/iterate_metadata_atomic.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 +17 -22
- 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 +147 -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/functional/Namespace.js +0 -16
- package/lib/functional/Namespace.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +28 -8
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +78 -60
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +4 -6
- package/lib/programmers/FeatureProgrammer.js +7 -7
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.d.ts +1 -1
- package/lib/programmers/IsProgrammer.js +33 -20
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +163 -138
- 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/ValidateProgrammer.js +28 -8
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/helpers/CloneJoiner.js +10 -2
- package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
- package/lib/programmers/helpers/ICheckEntry.d.ts +3 -2
- package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -2
- package/lib/programmers/helpers/ProtobufUtil.js +175 -17
- package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
- package/lib/programmers/helpers/RandomJoiner.d.ts +3 -5
- package/lib/programmers/helpers/RandomJoiner.js +7 -10
- package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
- package/lib/programmers/helpers/RandomRanger.d.ts +5 -6
- package/lib/programmers/helpers/RandomRanger.js +13 -33
- package/lib/programmers/helpers/RandomRanger.js.map +1 -1
- package/lib/programmers/helpers/UnionExplorer.d.ts +7 -8
- package/lib/programmers/helpers/UnionExplorer.js +6 -6
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
- package/lib/programmers/internal/application_alias.js +0 -1
- package/lib/programmers/internal/application_alias.js.map +1 -1
- package/lib/programmers/internal/application_array.js +60 -20
- package/lib/programmers/internal/application_array.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_number.js +95 -69
- package/lib/programmers/internal/application_number.js.map +1 -1
- package/lib/programmers/internal/application_object.js +0 -3
- package/lib/programmers/internal/application_object.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +41 -24
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/programmers/internal/application_string.js +56 -22
- package/lib/programmers/internal/application_string.js.map +1 -1
- package/lib/programmers/internal/check_array_length.js +25 -25
- package/lib/programmers/internal/check_array_length.js.map +1 -1
- package/lib/programmers/internal/check_bigint.js +13 -116
- package/lib/programmers/internal/check_bigint.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_properties.js +1 -1
- package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/check_number.js +62 -163
- package/lib/programmers/internal/check_number.js.map +1 -1
- package/lib/programmers/internal/check_string.js +16 -52
- package/lib/programmers/internal/check_string.js.map +1 -1
- package/lib/programmers/internal/check_template.js +16 -1
- package/lib/programmers/internal/check_template.js.map +1 -1
- package/lib/programmers/internal/check_union_array_like.js +4 -4
- package/lib/programmers/internal/check_union_array_like.js.map +1 -1
- package/lib/programmers/internal/feature_object_entries.js +1 -1
- package/lib/programmers/internal/feature_object_entries.js.map +1 -1
- package/lib/programmers/internal/random_custom.js +2 -2
- package/lib/programmers/internal/random_custom.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 +41 -78
- 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 +26 -17
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/{IsPruneProgrammer.d.ts → misc/MiscIsPruneProgrammer.d.ts} +2 -2
- package/lib/programmers/{IsPruneProgrammer.js → misc/MiscIsPruneProgrammer.js} +11 -11
- package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -0
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +23 -14
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +24 -44
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +138 -65
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +59 -85
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/schemas/json/IJsonSchema.d.ts +10 -38
- package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
- package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
- package/lib/schemas/metadata/IMetadataTypeTag.d.ts +2 -0
- package/lib/schemas/metadata/Metadata.d.ts +2 -2
- package/lib/schemas/metadata/Metadata.js +29 -29
- package/lib/schemas/metadata/Metadata.js.map +1 -1
- package/lib/schemas/metadata/MetadataAlias.d.ts +0 -2
- package/lib/schemas/metadata/MetadataAlias.js +0 -3
- package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
- package/lib/schemas/metadata/MetadataArray.d.ts +2 -0
- package/lib/schemas/metadata/MetadataArray.js +45 -2
- package/lib/schemas/metadata/MetadataArray.js.map +1 -1
- package/lib/schemas/metadata/MetadataAtomic.d.ts +9 -0
- package/lib/schemas/metadata/MetadataAtomic.js +59 -0
- package/lib/schemas/metadata/MetadataAtomic.js.map +1 -0
- package/lib/schemas/metadata/MetadataProperty.d.ts +0 -2
- package/lib/schemas/metadata/MetadataProperty.js +0 -3
- package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
- package/lib/schemas/metadata/MetadataTuple.d.ts +4 -2
- package/lib/schemas/metadata/MetadataTuple.js +1 -2
- package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
- package/lib/tags/ExclusiveMaximum.d.ts +10 -8
- package/lib/tags/ExclusiveMinimum.d.ts +10 -8
- package/lib/tags/Format.d.ts +8 -8
- package/lib/tags/MaxItems.d.ts +8 -8
- package/lib/tags/MaxLength.d.ts +8 -8
- package/lib/tags/Maximum.d.ts +10 -8
- package/lib/tags/MinItems.d.ts +8 -8
- package/lib/tags/MinLength.d.ts +8 -8
- package/lib/tags/Minimum.d.ts +10 -8
- package/lib/tags/MultipleOf.d.ts +10 -8
- package/lib/tags/Pattern.d.ts +7 -8
- package/lib/tags/TagBase.d.ts +10 -6
- package/lib/tags/Type.d.ts +14 -13
- package/lib/tags/index.d.ts +1 -0
- package/lib/tags/index.js +1 -0
- package/lib/tags/index.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 -6
- 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/MiscCreateIsPruneTransformer.js +2 -2
- package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
- 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/MiscIsPruneTransformer.js +2 -2
- package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
- 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/ProtobufAtomic.d.ts +5 -0
- package/lib/{schemas/metadata/ICommentTag.js → typings/ProtobufAtomic.js} +1 -1
- package/lib/typings/ProtobufAtomic.js.map +1 -0
- package/lib/typings/ValidationPipe.d.ts +7 -0
- package/lib/{schemas/metadata/IMetadataCommentTag.js → typings/ValidationPipe.js} +1 -1
- package/lib/typings/ValidationPipe.js.map +1 -0
- package/package.json +4 -2
- package/src/IRandomGenerator.ts +4 -3
- 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 +4 -4
- package/src/factories/JsonMetadataFactory.ts +43 -0
- package/src/factories/LiteralFactory.ts +11 -3
- package/src/factories/MetadataCollection.ts +0 -6
- package/src/factories/MetadataCommentTagFactory.ts +629 -0
- package/src/factories/MetadataFactory.ts +169 -7
- package/src/factories/MetadataTypeTagFactory.ts +313 -0
- package/src/factories/NumericRangeFactory.ts +33 -0
- package/src/factories/ProtobufFactory.ts +106 -99
- package/src/factories/TypeFactory.ts +0 -5
- package/src/factories/internal/metadata/emend_metadata_atomics.ts +6 -1
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -11
- package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
- package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -6
- 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_atomic.ts +2 -1
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
- package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +22 -27
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +44 -25
- 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/functional/Namespace.ts +0 -16
- package/src/programmers/AssertProgrammer.ts +57 -21
- package/src/programmers/CheckerProgrammer.ts +51 -120
- package/src/programmers/FeatureProgrammer.ts +15 -34
- package/src/programmers/IsProgrammer.ts +53 -42
- package/src/programmers/RandomProgrammer.ts +223 -242
- package/src/programmers/TypiaProgrammer.ts +27 -2
- package/src/programmers/ValidateProgrammer.ts +60 -21
- package/src/programmers/helpers/CloneJoiner.ts +57 -20
- package/src/programmers/helpers/ICheckEntry.ts +3 -2
- package/src/programmers/helpers/ProtobufUtil.ts +113 -17
- package/src/programmers/helpers/RandomJoiner.ts +11 -37
- package/src/programmers/helpers/RandomRanger.ts +16 -51
- package/src/programmers/helpers/UnionExplorer.ts +1 -20
- package/src/programmers/internal/application_alias.ts +0 -1
- package/src/programmers/internal/application_array.ts +32 -10
- package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
- package/src/programmers/internal/application_number.ts +76 -70
- package/src/programmers/internal/application_object.ts +0 -3
- package/src/programmers/internal/application_schema.ts +40 -22
- package/src/programmers/internal/application_string.ts +33 -27
- package/src/programmers/internal/check_array_length.ts +34 -28
- package/src/programmers/internal/check_bigint.ts +25 -118
- package/src/programmers/internal/check_dynamic_properties.ts +1 -2
- package/src/programmers/internal/check_number.ts +81 -261
- package/src/programmers/internal/check_string.ts +28 -39
- package/src/programmers/internal/check_template.ts +17 -1
- package/src/programmers/internal/check_union_array_like.ts +1 -16
- package/src/programmers/internal/feature_object_entries.ts +12 -18
- package/src/programmers/internal/random_custom.ts +3 -3
- 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 +32 -73
- package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
- package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
- package/src/programmers/misc/MiscCloneProgrammer.ts +24 -35
- package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
- package/src/programmers/misc/MiscPruneProgrammer.ts +16 -20
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +34 -68
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +153 -98
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
- package/src/schemas/json/IJsonSchema.ts +11 -38
- package/src/schemas/metadata/IMetadataAlias.ts +0 -2
- package/src/schemas/metadata/IMetadataProperty.ts +0 -2
- package/src/schemas/metadata/IMetadataTypeTag.ts +2 -0
- package/src/schemas/metadata/Metadata.ts +32 -46
- package/src/schemas/metadata/MetadataAlias.ts +0 -5
- package/src/schemas/metadata/MetadataArray.ts +21 -3
- package/src/schemas/metadata/MetadataAtomic.ts +42 -0
- package/src/schemas/metadata/MetadataProperty.ts +0 -5
- package/src/schemas/metadata/MetadataTuple.ts +5 -4
- package/src/tags/ExclusiveMaximum.ts +13 -8
- package/src/tags/ExclusiveMinimum.ts +13 -8
- package/src/tags/Format.ts +21 -20
- package/src/tags/MaxItems.ts +9 -8
- package/src/tags/MaxLength.ts +9 -8
- package/src/tags/Maximum.ts +13 -8
- package/src/tags/MinItems.ts +9 -8
- package/src/tags/MinLength.ts +9 -8
- package/src/tags/Minimum.ts +13 -8
- package/src/tags/MultipleOf.ts +15 -10
- package/src/tags/Pattern.ts +8 -8
- package/src/tags/TagBase.ts +18 -13
- package/src/tags/Type.ts +26 -29
- package/src/tags/index.ts +1 -0
- 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/MiscCreateIsPruneTransformer.ts +2 -2
- package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
- 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/ProtobufAtomic.ts +19 -0
- package/src/typings/ValidationPipe.ts +9 -0
- package/lib/factories/MetadataTagFactory.d.ts +0 -6
- package/lib/factories/MetadataTagFactory.js +0 -312
- package/lib/factories/MetadataTagFactory.js.map +0 -1
- package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +0 -3
- package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +0 -157
- package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +0 -1
- package/lib/functional/$is_custom.d.ts +0 -2
- package/lib/functional/$is_custom.js +0 -13
- package/lib/functional/$is_custom.js.map +0 -1
- package/lib/functional/$is_date.d.ts +0 -1
- package/lib/functional/$is_date.js +0 -7
- package/lib/functional/$is_date.js.map +0 -1
- package/lib/functional/$is_datetime.d.ts +0 -1
- package/lib/functional/$is_datetime.js +0 -8
- package/lib/functional/$is_datetime.js.map +0 -1
- package/lib/functional/$is_email.d.ts +0 -1
- package/lib/functional/$is_email.js +0 -7
- package/lib/functional/$is_email.js.map +0 -1
- package/lib/functional/$is_ipv4.d.ts +0 -1
- package/lib/functional/$is_ipv4.js +0 -7
- package/lib/functional/$is_ipv4.js.map +0 -1
- package/lib/functional/$is_ipv6.d.ts +0 -1
- package/lib/functional/$is_ipv6.js +0 -7
- package/lib/functional/$is_ipv6.js.map +0 -1
- package/lib/functional/$is_url.d.ts +0 -1
- package/lib/functional/$is_url.js +0 -7
- package/lib/functional/$is_url.js.map +0 -1
- package/lib/functional/$is_uuid.d.ts +0 -1
- package/lib/functional/$is_uuid.js +0 -7
- package/lib/functional/$is_uuid.js.map +0 -1
- package/lib/programmers/IsPruneProgrammer.js.map +0 -1
- package/lib/programmers/internal/application_resolved.d.ts +0 -4
- package/lib/programmers/internal/application_resolved.js.map +0 -1
- package/lib/programmers/internal/check_array_tags.js +0 -39
- package/lib/programmers/internal/check_array_tags.js.map +0 -1
- package/lib/programmers/internal/check_string_tags.d.ts +0 -1
- package/lib/programmers/internal/check_string_tags.js +0 -89
- package/lib/programmers/internal/check_string_tags.js.map +0 -1
- package/lib/programmers/internal/get_comment_tags.d.ts +0 -1
- package/lib/programmers/internal/get_comment_tags.js +0 -25
- package/lib/programmers/internal/get_comment_tags.js.map +0 -1
- package/lib/schemas/metadata/ICommentTag.d.ts +0 -4
- package/lib/schemas/metadata/ICommentTag.js.map +0 -1
- package/lib/schemas/metadata/IMetadataCommentTag.d.ts +0 -63
- package/lib/schemas/metadata/IMetadataCommentTag.js.map +0 -1
- package/src/factories/MetadataTagFactory.ts +0 -365
- package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +0 -183
- package/src/functional/$is_custom.ts +0 -14
- package/src/functional/$is_date.ts +0 -3
- package/src/functional/$is_datetime.ts +0 -2
- package/src/functional/$is_email.ts +0 -4
- package/src/functional/$is_ipv4.ts +0 -4
- package/src/functional/$is_ipv6.ts +0 -4
- package/src/functional/$is_url.ts +0 -4
- package/src/functional/$is_uuid.ts +0 -4
- package/src/programmers/internal/check_array_tags.ts +0 -45
- package/src/programmers/internal/check_string_tags.ts +0 -67
- package/src/programmers/internal/get_comment_tags.ts +0 -23
- package/src/schemas/metadata/ICommentTag.ts +0 -4
- package/src/schemas/metadata/IMetadataCommentTag.ts +0 -112
- /package/lib/{programmers/internal/check_array_tags.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
|
@@ -4,7 +4,6 @@ import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
|
4
4
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
5
5
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
6
6
|
|
|
7
|
-
import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
|
|
8
7
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
9
8
|
import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
|
|
10
9
|
import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
|
|
@@ -26,8 +25,6 @@ export const check_union_array_like =
|
|
|
26
25
|
input: ts.Expression,
|
|
27
26
|
origins: Origin[],
|
|
28
27
|
explore: FeatureProgrammer.IExplore,
|
|
29
|
-
tags: IMetadataCommentTag[],
|
|
30
|
-
jsDocTags: ts.JSDocTagInfo[],
|
|
31
28
|
): ts.ArrowFunction => {
|
|
32
29
|
// ONLY ONE TYPE
|
|
33
30
|
const targets: Array<Category> = origins.map(accessor.transform);
|
|
@@ -38,13 +35,7 @@ export const check_union_array_like =
|
|
|
38
35
|
parameters,
|
|
39
36
|
undefined,
|
|
40
37
|
undefined,
|
|
41
|
-
props.decoder(
|
|
42
|
-
accessor.array(input),
|
|
43
|
-
targets[0]!,
|
|
44
|
-
explore,
|
|
45
|
-
tags,
|
|
46
|
-
jsDocTags,
|
|
47
|
-
),
|
|
38
|
+
props.decoder(accessor.array(input), targets[0]!, explore),
|
|
48
39
|
);
|
|
49
40
|
|
|
50
41
|
const array = ts.factory.createIdentifier("array");
|
|
@@ -87,8 +78,6 @@ export const check_union_array_like =
|
|
|
87
78
|
? `"[0]"`
|
|
88
79
|
: "",
|
|
89
80
|
},
|
|
90
|
-
tags,
|
|
91
|
-
jsDocTags,
|
|
92
81
|
array,
|
|
93
82
|
),
|
|
94
83
|
),
|
|
@@ -110,8 +99,6 @@ export const check_union_array_like =
|
|
|
110
99
|
...explore,
|
|
111
100
|
tracable: true,
|
|
112
101
|
},
|
|
113
|
-
tags,
|
|
114
|
-
jsDocTags,
|
|
115
102
|
),
|
|
116
103
|
),
|
|
117
104
|
],
|
|
@@ -301,8 +288,6 @@ export namespace check_union_array_like {
|
|
|
301
288
|
front: ts.Expression,
|
|
302
289
|
target: Element,
|
|
303
290
|
explore: FeatureProgrammer.IExplore,
|
|
304
|
-
tags: IMetadataCommentTag[],
|
|
305
|
-
jsDocTags: ts.JSDocTagInfo[],
|
|
306
291
|
container: ts.Expression,
|
|
307
292
|
): ts.Expression;
|
|
308
293
|
decoder: UnionExplorer.Decoder<Category>;
|
|
@@ -41,23 +41,17 @@ export const feature_object_entries =
|
|
|
41
41
|
input: propInput,
|
|
42
42
|
key: prop.key,
|
|
43
43
|
meta: prop.value,
|
|
44
|
-
expression: config.decoder()(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return `$join(key)`;
|
|
57
|
-
})(),
|
|
58
|
-
},
|
|
59
|
-
prop.tags,
|
|
60
|
-
prop.jsDocTags,
|
|
61
|
-
),
|
|
44
|
+
expression: config.decoder()(propInput, prop.value, {
|
|
45
|
+
tracable: config.path || config.trace,
|
|
46
|
+
source: "function",
|
|
47
|
+
from,
|
|
48
|
+
postfix:
|
|
49
|
+
sole !== null
|
|
50
|
+
? IdentifierFactory.postfix(sole)
|
|
51
|
+
: (() => {
|
|
52
|
+
importer.use("join");
|
|
53
|
+
return `$join(key)`;
|
|
54
|
+
})(),
|
|
55
|
+
}),
|
|
62
56
|
};
|
|
63
57
|
});
|
|
@@ -3,7 +3,7 @@ import ts from "typescript";
|
|
|
3
3
|
import { ExpressionFactory } from "../../factories/ExpressionFactory";
|
|
4
4
|
import { LiteralFactory } from "../../factories/LiteralFactory";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
|
|
7
7
|
|
|
8
8
|
import { Customizable } from "../../typings/Customizable";
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@ import { Customizable } from "../../typings/Customizable";
|
|
|
13
13
|
export const random_custom =
|
|
14
14
|
(accessor: (name: string) => ts.Expression) =>
|
|
15
15
|
(type: keyof Customizable) =>
|
|
16
|
-
(
|
|
16
|
+
(tags: IMetadataTypeTag[]) =>
|
|
17
17
|
(expression: ts.Expression) =>
|
|
18
18
|
ExpressionFactory.coalesce(
|
|
19
19
|
ts.factory.createCallChain(
|
|
@@ -24,6 +24,6 @@ export const random_custom =
|
|
|
24
24
|
),
|
|
25
25
|
ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
|
|
26
26
|
undefined,
|
|
27
|
-
[LiteralFactory.generate(
|
|
27
|
+
[LiteralFactory.generate(tags)],
|
|
28
28
|
),
|
|
29
29
|
)(expression);
|
|
@@ -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,17 +2,15 @@ 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";
|
|
10
10
|
|
|
11
|
-
import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
|
|
12
|
-
import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
|
|
13
11
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
14
12
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
15
|
-
import {
|
|
13
|
+
import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
|
|
16
14
|
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
17
15
|
import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
|
|
18
16
|
import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
|
|
@@ -68,7 +66,7 @@ export namespace JsonStringifyProgrammer {
|
|
|
68
66
|
collection
|
|
69
67
|
.arrays()
|
|
70
68
|
.filter((a) => a.recursive)
|
|
71
|
-
.map((
|
|
69
|
+
.map((type, i) =>
|
|
72
70
|
StatementFactory.constant(
|
|
73
71
|
`${config.prefix}a${i}`,
|
|
74
72
|
ts.factory.createArrowFunction(
|
|
@@ -81,7 +79,10 @@ export namespace JsonStringifyProgrammer {
|
|
|
81
79
|
undefined,
|
|
82
80
|
decode_array_inline(config)(importer)(
|
|
83
81
|
ts.factory.createIdentifier("input"),
|
|
84
|
-
|
|
82
|
+
MetadataArray.create({
|
|
83
|
+
type,
|
|
84
|
+
tags: [],
|
|
85
|
+
}),
|
|
85
86
|
{
|
|
86
87
|
tracable: config.trace,
|
|
87
88
|
source: "function",
|
|
@@ -215,7 +216,9 @@ export namespace JsonStringifyProgrammer {
|
|
|
215
216
|
)
|
|
216
217
|
if (AtomicPredicator.template(meta)) {
|
|
217
218
|
const partial = Metadata.initialize();
|
|
218
|
-
partial.atomics.push(
|
|
219
|
+
partial.atomics.push(
|
|
220
|
+
MetadataAtomic.create({ type: "string", tags: [] }),
|
|
221
|
+
),
|
|
219
222
|
unions.push({
|
|
220
223
|
type: "template literal",
|
|
221
224
|
is: () =>
|
|
@@ -223,8 +226,6 @@ export namespace JsonStringifyProgrammer {
|
|
|
223
226
|
input,
|
|
224
227
|
partial,
|
|
225
228
|
explore,
|
|
226
|
-
[],
|
|
227
|
-
[],
|
|
228
229
|
),
|
|
229
230
|
value: () =>
|
|
230
231
|
decode_atomic(project)(importer)(
|
|
@@ -247,15 +248,15 @@ export namespace JsonStringifyProgrammer {
|
|
|
247
248
|
input,
|
|
248
249
|
(() => {
|
|
249
250
|
const partial = Metadata.initialize();
|
|
250
|
-
partial.atomics.push(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
251
|
+
partial.atomics.push(
|
|
252
|
+
MetadataAtomic.create({
|
|
253
|
+
type: constant.type,
|
|
254
|
+
tags: [],
|
|
255
|
+
}),
|
|
256
|
+
);
|
|
254
257
|
return partial;
|
|
255
258
|
})(),
|
|
256
259
|
explore,
|
|
257
|
-
[],
|
|
258
|
-
[],
|
|
259
260
|
),
|
|
260
261
|
value: () =>
|
|
261
262
|
decode_atomic(project)(importer)(
|
|
@@ -272,15 +273,15 @@ export namespace JsonStringifyProgrammer {
|
|
|
272
273
|
input,
|
|
273
274
|
(() => {
|
|
274
275
|
const partial = Metadata.initialize();
|
|
275
|
-
partial.atomics.push(
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
276
|
+
partial.atomics.push(
|
|
277
|
+
MetadataAtomic.create({
|
|
278
|
+
type: "string",
|
|
279
|
+
tags: [],
|
|
280
|
+
}),
|
|
281
|
+
);
|
|
279
282
|
return partial;
|
|
280
283
|
})(),
|
|
281
284
|
explore,
|
|
282
|
-
[],
|
|
283
|
-
[],
|
|
284
285
|
),
|
|
285
286
|
value: () =>
|
|
286
287
|
decode_constant_string(project)(importer)(
|
|
@@ -304,8 +305,6 @@ export namespace JsonStringifyProgrammer {
|
|
|
304
305
|
return partial;
|
|
305
306
|
})(),
|
|
306
307
|
explore,
|
|
307
|
-
[],
|
|
308
|
-
[],
|
|
309
308
|
),
|
|
310
309
|
value: () =>
|
|
311
310
|
decode_atomic(project)(importer)(
|
|
@@ -316,12 +315,7 @@ export namespace JsonStringifyProgrammer {
|
|
|
316
315
|
});
|
|
317
316
|
|
|
318
317
|
// TUPLES
|
|
319
|
-
for (const tuple of meta.tuples)
|
|
320
|
-
for (const child of tuple.type.elements)
|
|
321
|
-
if (StringifyPredicator.undefindable(meta))
|
|
322
|
-
throw new Error(
|
|
323
|
-
`Error on typia.json.stringify(): tuple cannot contain undefined value - (${child.getName()}).`,
|
|
324
|
-
);
|
|
318
|
+
for (const tuple of meta.tuples)
|
|
325
319
|
unions.push({
|
|
326
320
|
type: "tuple",
|
|
327
321
|
is: () =>
|
|
@@ -333,8 +327,6 @@ export namespace JsonStringifyProgrammer {
|
|
|
333
327
|
return partial;
|
|
334
328
|
})(),
|
|
335
329
|
explore,
|
|
336
|
-
[],
|
|
337
|
-
[],
|
|
338
330
|
),
|
|
339
331
|
value: () =>
|
|
340
332
|
decode_tuple(project)(config)(importer)(
|
|
@@ -343,15 +335,9 @@ export namespace JsonStringifyProgrammer {
|
|
|
343
335
|
explore,
|
|
344
336
|
),
|
|
345
337
|
});
|
|
346
|
-
}
|
|
347
338
|
|
|
348
339
|
// ARRAYS
|
|
349
340
|
if (meta.arrays.length) {
|
|
350
|
-
for (const child of meta.arrays)
|
|
351
|
-
if (StringifyPredicator.undefindable(child.type.value))
|
|
352
|
-
throw new Error(
|
|
353
|
-
`Error on typia.json.stringify(): array cannot contain undefined value (${child.type.value.getName()}).`,
|
|
354
|
-
);
|
|
355
341
|
const value: () => ts.Expression =
|
|
356
342
|
meta.arrays.length === 1
|
|
357
343
|
? () =>
|
|
@@ -534,23 +520,19 @@ export namespace JsonStringifyProgrammer {
|
|
|
534
520
|
from: "array",
|
|
535
521
|
})(input),
|
|
536
522
|
)
|
|
537
|
-
: decode_array_inline(config)(importer)(
|
|
538
|
-
input,
|
|
539
|
-
array.type,
|
|
540
|
-
explore,
|
|
541
|
-
);
|
|
523
|
+
: decode_array_inline(config)(importer)(input, array, explore);
|
|
542
524
|
|
|
543
525
|
const decode_array_inline =
|
|
544
526
|
(config: FeatureProgrammer.IConfig) =>
|
|
545
527
|
(importer: FunctionImporter) =>
|
|
546
528
|
(
|
|
547
529
|
input: ts.Expression,
|
|
548
|
-
array:
|
|
530
|
+
array: MetadataArray,
|
|
549
531
|
explore: FeatureProgrammer.IExplore,
|
|
550
532
|
) =>
|
|
551
533
|
FeatureProgrammer.decode_array(config)(importer)(
|
|
552
534
|
StringifyJoiner.array,
|
|
553
|
-
)(input, array, explore
|
|
535
|
+
)(input, array, explore);
|
|
554
536
|
|
|
555
537
|
const decode_tuple =
|
|
556
538
|
(project: IProject) =>
|
|
@@ -765,8 +747,6 @@ export namespace JsonStringifyProgrammer {
|
|
|
765
747
|
input: ts.Expression,
|
|
766
748
|
elements: T[],
|
|
767
749
|
explore: FeatureProgrammer.IExplore,
|
|
768
|
-
tags: IMetadataCommentTag[],
|
|
769
|
-
jsDocTags: IJsDocTagInfo[],
|
|
770
750
|
) => ts.ArrowFunction,
|
|
771
751
|
) =>
|
|
772
752
|
(
|
|
@@ -778,7 +758,7 @@ export namespace JsonStringifyProgrammer {
|
|
|
778
758
|
(parameters: ts.ParameterDeclaration[]) =>
|
|
779
759
|
(explore: FeatureProgrammer.IExplore) =>
|
|
780
760
|
(input: ts.Expression): ts.ArrowFunction =>
|
|
781
|
-
factory(parameters)(input, elements, explore
|
|
761
|
+
factory(parameters)(input, elements, explore);
|
|
782
762
|
if (elements.every((e) => e.type.recursive === false))
|
|
783
763
|
ts.factory.createCallExpression(
|
|
784
764
|
arrow([])(explore)(input),
|
|
@@ -921,8 +901,6 @@ export namespace JsonStringifyProgrammer {
|
|
|
921
901
|
input,
|
|
922
902
|
meta,
|
|
923
903
|
explore,
|
|
924
|
-
[],
|
|
925
|
-
[],
|
|
926
904
|
),
|
|
927
905
|
decoder: () => decode_object(importer),
|
|
928
906
|
joiner: StringifyJoiner.object(importer),
|
|
@@ -946,25 +924,11 @@ export namespace JsonStringifyProgrammer {
|
|
|
946
924
|
|
|
947
925
|
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
948
926
|
({ checker }) =>
|
|
949
|
-
(
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
absorb: true,
|
|
955
|
-
validate: (meta) => {
|
|
956
|
-
if (meta.atomics.find((a) => a.type === "bigint"))
|
|
957
|
-
throw new Error(NO_BIGINT);
|
|
958
|
-
else if (
|
|
959
|
-
meta.arrays.some(
|
|
960
|
-
(array) => array.type.value.isRequired() === false,
|
|
961
|
-
)
|
|
962
|
-
)
|
|
963
|
-
throw new Error(NO_UNDEFINED_IN_ARRAY);
|
|
964
|
-
},
|
|
965
|
-
})(collection)(type);
|
|
966
|
-
return [collection, meta];
|
|
967
|
-
};
|
|
927
|
+
(importer) =>
|
|
928
|
+
(type) =>
|
|
929
|
+
JsonMetadataFactory.analyze(`typia.json.${importer.method}`)(
|
|
930
|
+
checker,
|
|
931
|
+
)(type);
|
|
968
932
|
|
|
969
933
|
const create_throw_error =
|
|
970
934
|
(importer: FunctionImporter) =>
|
|
@@ -998,8 +962,3 @@ interface IUnion {
|
|
|
998
962
|
is: () => ts.Expression;
|
|
999
963
|
value: () => ts.Expression;
|
|
1000
964
|
}
|
|
1001
|
-
|
|
1002
|
-
const NO_BIGINT =
|
|
1003
|
-
"Error on typia.json.stringify(): does not allow bigint type.";
|
|
1004
|
-
const NO_UNDEFINED_IN_ARRAY =
|
|
1005
|
-
"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,
|
|
@@ -7,15 +7,13 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
|
|
|
7
7
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
8
8
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
9
9
|
|
|
10
|
-
import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
|
|
11
|
-
import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
|
|
12
10
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
13
11
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
14
|
-
import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
|
|
15
12
|
import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
|
|
16
13
|
import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
|
|
17
14
|
|
|
18
15
|
import { IProject } from "../../transformers/IProject";
|
|
16
|
+
import { TransformerError } from "../../transformers/TransformerError";
|
|
19
17
|
|
|
20
18
|
import { FeatureProgrammer } from "../FeatureProgrammer";
|
|
21
19
|
import { IsProgrammer } from "../IsProgrammer";
|
|
@@ -49,7 +47,7 @@ export namespace MiscCloneProgrammer {
|
|
|
49
47
|
collection
|
|
50
48
|
.arrays()
|
|
51
49
|
.filter((a) => a.recursive)
|
|
52
|
-
.map((
|
|
50
|
+
.map((type, i) =>
|
|
53
51
|
StatementFactory.constant(
|
|
54
52
|
`${config.prefix}a${i}`,
|
|
55
53
|
ts.factory.createArrowFunction(
|
|
@@ -62,7 +60,10 @@ export namespace MiscCloneProgrammer {
|
|
|
62
60
|
undefined,
|
|
63
61
|
decode_array_inline(config)(importer)(
|
|
64
62
|
ts.factory.createIdentifier("input"),
|
|
65
|
-
|
|
63
|
+
MetadataArray.create({
|
|
64
|
+
type,
|
|
65
|
+
tags: [],
|
|
66
|
+
}),
|
|
66
67
|
{
|
|
67
68
|
tracable: config.trace,
|
|
68
69
|
source: "function",
|
|
@@ -154,8 +155,6 @@ export namespace MiscCloneProgrammer {
|
|
|
154
155
|
return partial;
|
|
155
156
|
})(),
|
|
156
157
|
explore,
|
|
157
|
-
[],
|
|
158
|
-
[],
|
|
159
158
|
),
|
|
160
159
|
value: () =>
|
|
161
160
|
decode_tuple(project)(config)(importer)(
|
|
@@ -284,26 +283,20 @@ export namespace MiscCloneProgrammer {
|
|
|
284
283
|
from: "array",
|
|
285
284
|
})(input),
|
|
286
285
|
)
|
|
287
|
-
: decode_array_inline(config)(importer)(
|
|
288
|
-
input,
|
|
289
|
-
array.type,
|
|
290
|
-
explore,
|
|
291
|
-
);
|
|
286
|
+
: decode_array_inline(config)(importer)(input, array, explore);
|
|
292
287
|
|
|
293
288
|
const decode_array_inline =
|
|
294
289
|
(config: FeatureProgrammer.IConfig) =>
|
|
295
290
|
(importer: FunctionImporter) =>
|
|
296
291
|
(
|
|
297
292
|
input: ts.Expression,
|
|
298
|
-
array:
|
|
293
|
+
array: MetadataArray,
|
|
299
294
|
explore: FeatureProgrammer.IExplore,
|
|
300
295
|
) =>
|
|
301
296
|
FeatureProgrammer.decode_array(config)(importer)(CloneJoiner.array)(
|
|
302
297
|
input,
|
|
303
298
|
array,
|
|
304
299
|
explore,
|
|
305
|
-
[],
|
|
306
|
-
[],
|
|
307
300
|
);
|
|
308
301
|
|
|
309
302
|
const decode_tuple =
|
|
@@ -505,7 +498,7 @@ export namespace MiscCloneProgrammer {
|
|
|
505
498
|
success: ts.factory.createTrue(),
|
|
506
499
|
failure: (input, expected) =>
|
|
507
500
|
create_throw_error(importer)(expected)(input),
|
|
508
|
-
})([])(input, sets, explore
|
|
501
|
+
})([])(input, sets, explore),
|
|
509
502
|
undefined,
|
|
510
503
|
undefined,
|
|
511
504
|
);
|
|
@@ -534,8 +527,6 @@ export namespace MiscCloneProgrammer {
|
|
|
534
527
|
...explore,
|
|
535
528
|
postfix: `${explore.postfix}[0]`,
|
|
536
529
|
},
|
|
537
|
-
[],
|
|
538
|
-
[],
|
|
539
530
|
),
|
|
540
531
|
func(
|
|
541
532
|
ts.factory.createElementAccessExpression(
|
|
@@ -547,8 +538,6 @@ export namespace MiscCloneProgrammer {
|
|
|
547
538
|
...explore,
|
|
548
539
|
postfix: `${explore.postfix}[1]`,
|
|
549
540
|
},
|
|
550
|
-
[],
|
|
551
|
-
[],
|
|
552
541
|
),
|
|
553
542
|
);
|
|
554
543
|
},
|
|
@@ -578,7 +567,7 @@ export namespace MiscCloneProgrammer {
|
|
|
578
567
|
success: ts.factory.createTrue(),
|
|
579
568
|
failure: (input, expected) =>
|
|
580
569
|
create_throw_error(importer)(expected)(input),
|
|
581
|
-
})([])(input, maps, explore
|
|
570
|
+
})([])(input, maps, explore),
|
|
582
571
|
undefined,
|
|
583
572
|
undefined,
|
|
584
573
|
);
|
|
@@ -637,8 +626,6 @@ export namespace MiscCloneProgrammer {
|
|
|
637
626
|
input: ts.Expression,
|
|
638
627
|
elements: T[],
|
|
639
628
|
explore: FeatureProgrammer.IExplore,
|
|
640
|
-
tags: IMetadataCommentTag[],
|
|
641
|
-
jsDocTags: IJsDocTagInfo[],
|
|
642
629
|
) => ts.ArrowFunction,
|
|
643
630
|
) =>
|
|
644
631
|
(
|
|
@@ -650,7 +637,7 @@ export namespace MiscCloneProgrammer {
|
|
|
650
637
|
(parameters: ts.ParameterDeclaration[]) =>
|
|
651
638
|
(explore: FeatureProgrammer.IExplore) =>
|
|
652
639
|
(input: ts.Expression): ts.ArrowFunction =>
|
|
653
|
-
factory(parameters)(input, elements, explore
|
|
640
|
+
factory(parameters)(input, elements, explore);
|
|
654
641
|
if (elements.every((e) => e.type.recursive === false))
|
|
655
642
|
ts.factory.createCallExpression(
|
|
656
643
|
arrow([])(explore)(input),
|
|
@@ -710,7 +697,7 @@ export namespace MiscCloneProgrammer {
|
|
|
710
697
|
prefix: PREFIX,
|
|
711
698
|
trace: false,
|
|
712
699
|
path: false,
|
|
713
|
-
initializer
|
|
700
|
+
initializer,
|
|
714
701
|
decoder: () => decode(project)(config)(importer),
|
|
715
702
|
objector: {
|
|
716
703
|
checker: () => IsProgrammer.decode(project)(importer),
|
|
@@ -734,27 +721,29 @@ export namespace MiscCloneProgrammer {
|
|
|
734
721
|
return config;
|
|
735
722
|
};
|
|
736
723
|
|
|
737
|
-
const initializer =
|
|
738
|
-
(method: string): FeatureProgrammer.IConfig["initializer"] =>
|
|
724
|
+
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
739
725
|
({ checker }) =>
|
|
726
|
+
(importer) =>
|
|
740
727
|
(type) => {
|
|
741
728
|
const collection = new MetadataCollection();
|
|
742
|
-
const
|
|
729
|
+
const result = MetadataFactory.analyze(checker)({
|
|
743
730
|
escape: false,
|
|
744
731
|
constant: true,
|
|
745
732
|
absorb: true,
|
|
746
733
|
validate: (meta) => {
|
|
734
|
+
const output: string[] = [];
|
|
747
735
|
if (meta.natives.some((n) => n === "WeakSet"))
|
|
748
|
-
|
|
749
|
-
`Error on ${method}(): WeakSet is not supported.`,
|
|
750
|
-
);
|
|
736
|
+
output.push("unable to clone WeakSet");
|
|
751
737
|
else if (meta.natives.some((n) => n === "WeakMap"))
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
);
|
|
738
|
+
output.push("unable to clone WeakMap");
|
|
739
|
+
return output;
|
|
755
740
|
},
|
|
756
741
|
})(collection)(type);
|
|
757
|
-
|
|
742
|
+
if (result.success === false)
|
|
743
|
+
throw TransformerError.from(`typia.misc.${importer.method}`)(
|
|
744
|
+
result.errors,
|
|
745
|
+
);
|
|
746
|
+
return [collection, result.data];
|
|
758
747
|
};
|
|
759
748
|
|
|
760
749
|
const create_throw_error =
|