typia 5.0.0-dev.2023084 → 5.0.0
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/Resolved.d.ts +1 -1
- 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 +3 -1
- package/lib/factories/ExpressionFactory.js +25 -1
- package/lib/factories/ExpressionFactory.js.map +1 -1
- package/lib/factories/IdentifierFactory.d.ts +2 -1
- package/lib/factories/IdentifierFactory.js +11 -0
- package/lib/factories/IdentifierFactory.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.d.ts +7 -7
- package/lib/factories/MetadataCollection.js +4 -6
- 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 +248 -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 +137 -91
- 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 +5 -0
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js +51 -0
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
- 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 +2 -2
- 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 +13 -7
- 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 +66 -56
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +3 -0
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +45 -0
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
- package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js +175 -41
- 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 -21
- 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_sort.js +2 -2
- package/lib/factories/internal/metadata/iterate_metadata_sort.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 +12 -6
- 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/$any.js +2 -1
- package/lib/functional/$any.js.map +1 -1
- package/lib/functional/$clone.d.ts +2 -0
- package/lib/functional/$clone.js +8 -0
- package/lib/functional/$clone.js.map +1 -0
- package/lib/functional/Namespace.js +0 -16
- package/lib/functional/Namespace.js.map +1 -1
- package/lib/module.d.ts +2 -39
- package/lib/module.js +3 -17
- package/lib/module.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +28 -10
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +97 -70
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +3 -5
- 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 -22
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +196 -160
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/TypiaProgrammer.js +87 -28
- package/lib/programmers/TypiaProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +28 -10
- 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 +4 -3
- 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 +46 -35
- 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} +6 -6
- 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/application_tuple.js +10 -9
- package/lib/programmers/internal/application_tuple.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 +20 -109
- 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 +57 -147
- package/lib/programmers/internal/check_number.js.map +1 -1
- package/lib/programmers/internal/check_string.js +21 -33
- package/lib/programmers/internal/check_string.js.map +1 -1
- package/lib/programmers/internal/check_template.js +31 -49
- package/lib/programmers/internal/check_template.js.map +1 -1
- package/lib/programmers/internal/check_union_array_like.js +7 -6
- 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 +8 -2
- package/lib/programmers/internal/random_custom.js.map +1 -1
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
- package/lib/programmers/internal/wrap_metadata_rest_tuple.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 +48 -85
- 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 +34 -25
- 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 +34 -25
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +48 -48
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +152 -69
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +80 -85
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/protobuf.d.ts +34 -34
- package/lib/schemas/json/IJsonSchema.d.ts +10 -38
- package/lib/schemas/metadata/IMetadata.d.ts +9 -2
- package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
- package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
- package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
- package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
- package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
- package/lib/schemas/metadata/IMetadataAtomic.d.ts +3 -10
- package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
- package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
- package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
- package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
- package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
- package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
- package/lib/schemas/metadata/IMetadataTypeTag.d.ts +8 -0
- package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
- package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
- package/lib/schemas/metadata/Metadata.d.ts +2 -2
- package/lib/schemas/metadata/Metadata.js +177 -122
- 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 +8 -6
- package/lib/schemas/metadata/MetadataArray.js +48 -19
- package/lib/schemas/metadata/MetadataArray.js.map +1 -1
- package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
- package/lib/schemas/metadata/MetadataArrayType.js +36 -0
- package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
- 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 +8 -8
- package/lib/schemas/metadata/MetadataTuple.js +4 -19
- package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
- package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
- package/lib/schemas/metadata/MetadataTupleType.js +40 -0
- package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
- 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 +52 -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.d.ts +1 -1
- package/lib/transformers/FileTransformer.js +30 -7
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/IProject.d.ts +4 -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 -17
- 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/IMetadataTag.js → typings/ValidationPipe.js} +1 -1
- package/lib/typings/ValidationPipe.js.map +1 -0
- package/package.json +6 -2
- package/src/IRandomGenerator.ts +4 -3
- package/src/Primitive.ts +135 -135
- package/src/Resolved.ts +116 -116
- 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 +46 -2
- package/src/factories/IdentifierFactory.ts +15 -0
- package/src/factories/JsonMetadataFactory.ts +43 -0
- package/src/factories/LiteralFactory.ts +11 -3
- package/src/factories/MetadataCollection.ts +18 -18
- package/src/factories/MetadataCommentTagFactory.ts +629 -0
- package/src/factories/MetadataFactory.ts +214 -46
- package/src/factories/MetadataTypeTagFactory.ts +313 -0
- package/src/factories/NumericRangeFactory.ts +33 -0
- package/src/factories/ProtobufFactory.ts +272 -268
- package/src/factories/TypeFactory.ts +0 -5
- package/src/factories/internal/metadata/emend_metadata_atomics.ts +40 -35
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -11
- package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +14 -7
- package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -6
- package/src/factories/internal/metadata/emplace_metadata_tuple.ts +13 -3
- package/src/factories/internal/metadata/explore_metadata.ts +32 -38
- 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 +19 -6
- package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -63
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +141 -133
- package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -0
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +141 -28
- package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
- package/src/factories/internal/metadata/iterate_metadata_native.ts +210 -210
- package/src/factories/internal/metadata/iterate_metadata_object.ts +12 -11
- package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -49
- package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
- package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +18 -5
- package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
- package/src/functional/$ProtobufWriter.ts +151 -151
- package/src/functional/$any.ts +3 -1
- package/src/functional/$clone.ts +4 -0
- package/src/functional/Namespace.ts +0 -16
- package/src/json.ts +648 -648
- package/src/misc.ts +651 -651
- package/src/module.ts +656 -709
- package/src/programmers/AssertProgrammer.ts +317 -281
- package/src/programmers/CheckerProgrammer.ts +1137 -1174
- package/src/programmers/FeatureProgrammer.ts +13 -32
- package/src/programmers/IsProgrammer.ts +252 -241
- package/src/programmers/RandomProgrammer.ts +878 -874
- package/src/programmers/TypiaProgrammer.ts +36 -2
- package/src/programmers/ValidateProgrammer.ts +346 -307
- package/src/programmers/helpers/AtomicPredicator.ts +31 -31
- package/src/programmers/helpers/CloneJoiner.ts +57 -20
- package/src/programmers/helpers/FunctionImporeter.ts +91 -91
- package/src/programmers/helpers/ICheckEntry.ts +4 -3
- package/src/programmers/helpers/ProtobufUtil.ts +125 -29
- package/src/programmers/helpers/RandomJoiner.ts +11 -33
- package/src/programmers/helpers/RandomRanger.ts +16 -51
- package/src/programmers/helpers/StringifyPredicator.ts +12 -12
- package/src/programmers/helpers/UnionExplorer.ts +46 -51
- package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
- package/src/programmers/internal/application_alias.ts +0 -1
- package/src/programmers/internal/application_array.ts +33 -10
- package/src/programmers/internal/application_default_string.ts +37 -37
- package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +55 -55
- 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 +175 -157
- package/src/programmers/internal/application_string.ts +33 -27
- package/src/programmers/internal/application_tuple.ts +12 -11
- package/src/programmers/internal/check_array_length.ts +34 -28
- package/src/programmers/internal/check_bigint.ts +26 -91
- package/src/programmers/internal/check_dynamic_properties.ts +1 -2
- package/src/programmers/internal/check_number.ts +83 -236
- package/src/programmers/internal/check_string.ts +37 -17
- package/src/programmers/internal/check_template.ts +17 -12
- package/src/programmers/internal/check_union_array_like.ts +4 -18
- package/src/programmers/internal/feature_object_entries.ts +12 -18
- package/src/programmers/internal/metadata_to_pattern.ts +34 -34
- package/src/programmers/internal/random_custom.ts +11 -3
- package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -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 +964 -995
- package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
- package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
- package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
- package/src/programmers/misc/MiscCloneProgrammer.ts +774 -775
- package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
- package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +69 -64
- package/src/programmers/misc/MiscPruneProgrammer.ts +550 -544
- package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
- package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +655 -673
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +883 -814
- package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +85 -85
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +23 -36
- package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
- package/src/protobuf.ts +881 -881
- package/src/schemas/json/IJsonSchema.ts +11 -38
- package/src/schemas/metadata/IMetadata.ts +34 -27
- package/src/schemas/metadata/IMetadataAlias.ts +0 -2
- package/src/schemas/metadata/IMetadataArray.ts +4 -7
- package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
- package/src/schemas/metadata/IMetadataAtomic.ts +3 -10
- package/src/schemas/metadata/IMetadataCollection.ts +4 -4
- package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
- package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
- package/src/schemas/metadata/IMetadataProperty.ts +0 -2
- package/src/schemas/metadata/IMetadataTuple.ts +4 -7
- package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
- package/src/schemas/metadata/IMetadataTypeTag.ts +8 -0
- package/src/schemas/metadata/Metadata.ts +685 -643
- package/src/schemas/metadata/MetadataAlias.ts +0 -5
- package/src/schemas/metadata/MetadataArray.ts +28 -34
- package/src/schemas/metadata/MetadataArrayType.ts +57 -0
- package/src/schemas/metadata/MetadataAtomic.ts +42 -0
- package/src/schemas/metadata/MetadataEscaped.ts +51 -51
- package/src/schemas/metadata/MetadataProperty.ts +0 -5
- package/src/schemas/metadata/MetadataTuple.ts +9 -35
- package/src/schemas/metadata/MetadataTupleType.ts +67 -0
- 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 +64 -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 +23 -13
- package/src/transformers/IProject.ts +4 -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 +116 -111
- package/src/transformers/features/misc/MetadataTransformer.ts +61 -53
- 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/Atomic.ts +1 -0
- package/src/typings/ProtobufAtomic.ts +19 -0
- package/src/typings/ValidationPipe.ts +9 -0
- package/src/utils/RandomGenerator.ts +83 -83
- package/lib/CustomValidatorMap.d.ts +0 -110
- package/lib/CustomValidatorMap.js.map +0 -1
- 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/emplace_metadata_array.d.ts +0 -5
- package/lib/factories/internal/metadata/emplace_metadata_array.js +0 -38
- package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
- package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
- package/lib/factories/internal/metadata/iterate_metadata_tag.js +0 -50
- package/lib/factories/internal/metadata/iterate_metadata_tag.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.js +0 -44
- package/lib/programmers/internal/check_array.js.map +0 -1
- package/lib/programmers/internal/check_custom.d.ts +0 -1
- package/lib/programmers/internal/check_custom.js +0 -30
- package/lib/programmers/internal/check_custom.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/IMetadataTag.d.ts +0 -63
- package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
- package/src/CustomValidatorMap.ts +0 -126
- package/src/factories/MetadataTagFactory.ts +0 -366
- package/src/factories/internal/metadata/iterate_metadata_tag.ts +0 -31
- 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.ts +0 -30
- package/src/programmers/internal/check_custom.ts +0 -31
- 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/IMetadataTag.ts +0 -112
- /package/lib/{programmers/internal/check_array.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
package/src/Resolved.ts
CHANGED
|
@@ -1,116 +1,116 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolved type erased every methods.
|
|
3
|
-
*
|
|
4
|
-
* `Resolved` is a type of TMP (Type Meta Programming) type which converts
|
|
5
|
-
* its argument as a resolved type that erased every method properties.
|
|
6
|
-
*
|
|
7
|
-
* If the target argument is a built-in class which returns its origin primitive type
|
|
8
|
-
* through the `valueOf()` method like the `String` or `Number`, its return type would
|
|
9
|
-
* be the `string` or `number`. Otherwise, the built-in class does not have the
|
|
10
|
-
* `valueOf()` method, the return type would be same with the target argument.
|
|
11
|
-
*
|
|
12
|
-
* Otherwise, the target argument is a type of custom class, all of its custom methods
|
|
13
|
-
* would be erased and its prototype would be changed to the primitive `object`.
|
|
14
|
-
* Therefore, return type of the TMP type finally be the resolved object.
|
|
15
|
-
*
|
|
16
|
-
* Before | After
|
|
17
|
-
* ------------------------|----------------------------------------
|
|
18
|
-
* `Boolean` | `boolean`
|
|
19
|
-
* `Number` | `number`
|
|
20
|
-
* `BigInt` | `bigint`
|
|
21
|
-
* `String` | `string`
|
|
22
|
-
* `Class` | `interface`
|
|
23
|
-
* Native
|
|
24
|
-
*
|
|
25
|
-
* @template Instance Target argument type.
|
|
26
|
-
* @author Jenogho Nam - https://github.com/samchon
|
|
27
|
-
* @author Kyungsu Kang - https://github.com/kakasoo
|
|
28
|
-
*/
|
|
29
|
-
export type Resolved<T> = Equal<T, ResolvedMain<T>> extends true
|
|
30
|
-
? T
|
|
31
|
-
: ResolvedMain<T>;
|
|
32
|
-
|
|
33
|
-
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
34
|
-
|
|
35
|
-
type ResolvedMain<Instance> = Instance extends [never]
|
|
36
|
-
? never // (special trick for jsonable | null) type
|
|
37
|
-
: ValueOf<Instance> extends boolean | number | bigint | string
|
|
38
|
-
? ValueOf<Instance>
|
|
39
|
-
: Instance extends Function
|
|
40
|
-
? never
|
|
41
|
-
: Instance extends object
|
|
42
|
-
? ResolvedObject<Instance>
|
|
43
|
-
: ValueOf<Instance>;
|
|
44
|
-
|
|
45
|
-
type ResolvedObject<Instance extends object> = Instance extends Array<infer T>
|
|
46
|
-
? IsTuple<Instance> extends true
|
|
47
|
-
? ResolvedTuple<Instance>
|
|
48
|
-
: ResolvedMain<T>[]
|
|
49
|
-
: Instance extends Set<infer U>
|
|
50
|
-
? Set<ResolvedMain<U>>
|
|
51
|
-
: Instance extends Map<infer K, infer V>
|
|
52
|
-
? Map<ResolvedMain<K>, ResolvedMain<V>>
|
|
53
|
-
: Instance extends WeakSet<any> | WeakMap<any, any>
|
|
54
|
-
? never
|
|
55
|
-
: Instance extends
|
|
56
|
-
| Date
|
|
57
|
-
| Uint8Array
|
|
58
|
-
| Uint8ClampedArray
|
|
59
|
-
| Uint16Array
|
|
60
|
-
| Uint32Array
|
|
61
|
-
| BigUint64Array
|
|
62
|
-
| Int8Array
|
|
63
|
-
| Int16Array
|
|
64
|
-
| Int32Array
|
|
65
|
-
| BigInt64Array
|
|
66
|
-
| Float32Array
|
|
67
|
-
| Float64Array
|
|
68
|
-
| ArrayBuffer
|
|
69
|
-
| SharedArrayBuffer
|
|
70
|
-
| DataView
|
|
71
|
-
? Instance
|
|
72
|
-
: {
|
|
73
|
-
[P in keyof Instance]: ResolvedMain<Instance[P]>;
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
type ResolvedTuple<T extends readonly any[]> = T extends []
|
|
77
|
-
? []
|
|
78
|
-
: T extends [infer F]
|
|
79
|
-
? [ResolvedMain<F>]
|
|
80
|
-
: T extends [infer F, ...infer Rest extends readonly any[]]
|
|
81
|
-
? [ResolvedMain<F>, ...ResolvedTuple<Rest>]
|
|
82
|
-
: T extends [(infer F)?]
|
|
83
|
-
? [ResolvedMain<F>?]
|
|
84
|
-
: T extends [(infer F)?, ...infer Rest extends readonly any[]]
|
|
85
|
-
? [ResolvedMain<F>?, ...ResolvedTuple<Rest>]
|
|
86
|
-
: [];
|
|
87
|
-
|
|
88
|
-
type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true
|
|
89
|
-
? boolean
|
|
90
|
-
: IsValueOf<Instance, Number> extends true
|
|
91
|
-
? number
|
|
92
|
-
: IsValueOf<Instance, String> extends true
|
|
93
|
-
? string
|
|
94
|
-
: Instance;
|
|
95
|
-
|
|
96
|
-
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
97
|
-
never,
|
|
98
|
-
]
|
|
99
|
-
? false
|
|
100
|
-
: T extends readonly any[]
|
|
101
|
-
? number extends T["length"]
|
|
102
|
-
? false
|
|
103
|
-
: true
|
|
104
|
-
: false;
|
|
105
|
-
|
|
106
|
-
type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
107
|
-
? Object extends IValueOf<infer Primitive>
|
|
108
|
-
? Instance extends Primitive
|
|
109
|
-
? false
|
|
110
|
-
: true // not Primitive, but Object
|
|
111
|
-
: false // cannot be
|
|
112
|
-
: false;
|
|
113
|
-
|
|
114
|
-
interface IValueOf<T> {
|
|
115
|
-
valueOf(): T;
|
|
116
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Resolved type erased every methods.
|
|
3
|
+
*
|
|
4
|
+
* `Resolved` is a type of TMP (Type Meta Programming) type which converts
|
|
5
|
+
* its argument as a resolved type that erased every method properties.
|
|
6
|
+
*
|
|
7
|
+
* If the target argument is a built-in class which returns its origin primitive type
|
|
8
|
+
* through the `valueOf()` method like the `String` or `Number`, its return type would
|
|
9
|
+
* be the `string` or `number`. Otherwise, the built-in class does not have the
|
|
10
|
+
* `valueOf()` method, the return type would be same with the target argument.
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, the target argument is a type of custom class, all of its custom methods
|
|
13
|
+
* would be erased and its prototype would be changed to the primitive `object`.
|
|
14
|
+
* Therefore, return type of the TMP type finally be the resolved object.
|
|
15
|
+
*
|
|
16
|
+
* Before | After
|
|
17
|
+
* ------------------------|----------------------------------------
|
|
18
|
+
* `Boolean` | `boolean`
|
|
19
|
+
* `Number` | `number`
|
|
20
|
+
* `BigInt` | `bigint`
|
|
21
|
+
* `String` | `string`
|
|
22
|
+
* `Class` | `interface`
|
|
23
|
+
* Native Class or Others | No change
|
|
24
|
+
*
|
|
25
|
+
* @template Instance Target argument type.
|
|
26
|
+
* @author Jenogho Nam - https://github.com/samchon
|
|
27
|
+
* @author Kyungsu Kang - https://github.com/kakasoo
|
|
28
|
+
*/
|
|
29
|
+
export type Resolved<T> = Equal<T, ResolvedMain<T>> extends true
|
|
30
|
+
? T
|
|
31
|
+
: ResolvedMain<T>;
|
|
32
|
+
|
|
33
|
+
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
34
|
+
|
|
35
|
+
type ResolvedMain<Instance> = Instance extends [never]
|
|
36
|
+
? never // (special trick for jsonable | null) type
|
|
37
|
+
: ValueOf<Instance> extends boolean | number | bigint | string
|
|
38
|
+
? ValueOf<Instance>
|
|
39
|
+
: Instance extends Function
|
|
40
|
+
? never
|
|
41
|
+
: Instance extends object
|
|
42
|
+
? ResolvedObject<Instance>
|
|
43
|
+
: ValueOf<Instance>;
|
|
44
|
+
|
|
45
|
+
type ResolvedObject<Instance extends object> = Instance extends Array<infer T>
|
|
46
|
+
? IsTuple<Instance> extends true
|
|
47
|
+
? ResolvedTuple<Instance>
|
|
48
|
+
: ResolvedMain<T>[]
|
|
49
|
+
: Instance extends Set<infer U>
|
|
50
|
+
? Set<ResolvedMain<U>>
|
|
51
|
+
: Instance extends Map<infer K, infer V>
|
|
52
|
+
? Map<ResolvedMain<K>, ResolvedMain<V>>
|
|
53
|
+
: Instance extends WeakSet<any> | WeakMap<any, any>
|
|
54
|
+
? never
|
|
55
|
+
: Instance extends
|
|
56
|
+
| Date
|
|
57
|
+
| Uint8Array
|
|
58
|
+
| Uint8ClampedArray
|
|
59
|
+
| Uint16Array
|
|
60
|
+
| Uint32Array
|
|
61
|
+
| BigUint64Array
|
|
62
|
+
| Int8Array
|
|
63
|
+
| Int16Array
|
|
64
|
+
| Int32Array
|
|
65
|
+
| BigInt64Array
|
|
66
|
+
| Float32Array
|
|
67
|
+
| Float64Array
|
|
68
|
+
| ArrayBuffer
|
|
69
|
+
| SharedArrayBuffer
|
|
70
|
+
| DataView
|
|
71
|
+
? Instance
|
|
72
|
+
: {
|
|
73
|
+
[P in keyof Instance]: ResolvedMain<Instance[P]>;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
type ResolvedTuple<T extends readonly any[]> = T extends []
|
|
77
|
+
? []
|
|
78
|
+
: T extends [infer F]
|
|
79
|
+
? [ResolvedMain<F>]
|
|
80
|
+
: T extends [infer F, ...infer Rest extends readonly any[]]
|
|
81
|
+
? [ResolvedMain<F>, ...ResolvedTuple<Rest>]
|
|
82
|
+
: T extends [(infer F)?]
|
|
83
|
+
? [ResolvedMain<F>?]
|
|
84
|
+
: T extends [(infer F)?, ...infer Rest extends readonly any[]]
|
|
85
|
+
? [ResolvedMain<F>?, ...ResolvedTuple<Rest>]
|
|
86
|
+
: [];
|
|
87
|
+
|
|
88
|
+
type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true
|
|
89
|
+
? boolean
|
|
90
|
+
: IsValueOf<Instance, Number> extends true
|
|
91
|
+
? number
|
|
92
|
+
: IsValueOf<Instance, String> extends true
|
|
93
|
+
? string
|
|
94
|
+
: Instance;
|
|
95
|
+
|
|
96
|
+
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
97
|
+
never,
|
|
98
|
+
]
|
|
99
|
+
? false
|
|
100
|
+
: T extends readonly any[]
|
|
101
|
+
? number extends T["length"]
|
|
102
|
+
? false
|
|
103
|
+
: true
|
|
104
|
+
: false;
|
|
105
|
+
|
|
106
|
+
type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
107
|
+
? Object extends IValueOf<infer Primitive>
|
|
108
|
+
? Instance extends Primitive
|
|
109
|
+
? false
|
|
110
|
+
: true // not Primitive, but Object
|
|
111
|
+
: false // cannot be
|
|
112
|
+
: false;
|
|
113
|
+
|
|
114
|
+
interface IValueOf<T> {
|
|
115
|
+
valueOf(): T;
|
|
116
|
+
}
|
|
@@ -64,7 +64,7 @@ export namespace TypiaGenerateWizard {
|
|
|
64
64
|
str.substring(str.length - 5) === ".json",
|
|
65
65
|
);
|
|
66
66
|
if (files.length === 0)
|
|
67
|
-
throw new
|
|
67
|
+
throw new URIError(`Unable to find "tsconfig.json" file.`);
|
|
68
68
|
else if (files.length === 1) return files[0];
|
|
69
69
|
return select("tsconfig")("TS Config File")(files);
|
|
70
70
|
};
|
|
@@ -126,7 +126,7 @@ export namespace TypiaSetupWizard {
|
|
|
126
126
|
);
|
|
127
127
|
if (fileList.length === 0) {
|
|
128
128
|
if (process.cwd() !== pack.directory)
|
|
129
|
-
throw new
|
|
129
|
+
throw new URIError(`Unable to find "tsconfig.json" file.`);
|
|
130
130
|
return null;
|
|
131
131
|
} else if (fileList.length === 1) return fileList[0];
|
|
132
132
|
return select("tsconfig")("TS Config File")(fileList);
|
|
@@ -15,7 +15,7 @@ export class PackageManager {
|
|
|
15
15
|
"package.json",
|
|
16
16
|
)(process.cwd());
|
|
17
17
|
if (location === null)
|
|
18
|
-
throw new
|
|
18
|
+
throw new URIError(`Unable to find "package.json" file`);
|
|
19
19
|
|
|
20
20
|
return new PackageManager(
|
|
21
21
|
location,
|
|
@@ -15,7 +15,7 @@ export namespace PluginConfigurator {
|
|
|
15
15
|
| comments.CommentObject
|
|
16
16
|
| undefined;
|
|
17
17
|
if (compilerOptions === undefined)
|
|
18
|
-
throw new
|
|
18
|
+
throw new ReferenceError(
|
|
19
19
|
`${args.project} file does not have "compilerOptions" property.`,
|
|
20
20
|
);
|
|
21
21
|
|
|
@@ -27,7 +27,7 @@ export namespace PluginConfigurator {
|
|
|
27
27
|
if (plugins === undefined)
|
|
28
28
|
return (compilerOptions.plugins = [] as any);
|
|
29
29
|
else if (!Array.isArray(plugins))
|
|
30
|
-
throw new
|
|
30
|
+
throw new TypeError(
|
|
31
31
|
`"plugins" property of ${args.project} must be array type.`,
|
|
32
32
|
);
|
|
33
33
|
return plugins;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
|
+
import { RandomGenerator } from "../utils/RandomGenerator";
|
|
4
|
+
|
|
3
5
|
export namespace ExpressionFactory {
|
|
4
|
-
export const bigint = (value: number) =>
|
|
6
|
+
export const bigint = (value: number | bigint) =>
|
|
5
7
|
ts.factory.createCallExpression(
|
|
6
8
|
ts.factory.createIdentifier("BigInt"),
|
|
7
9
|
undefined,
|
|
8
|
-
[ts.factory.
|
|
10
|
+
[ts.factory.createIdentifier(value.toString())],
|
|
9
11
|
);
|
|
10
12
|
|
|
11
13
|
export const isRequired = (input: ts.Expression): ts.Expression =>
|
|
@@ -112,4 +114,46 @@ export namespace ExpressionFactory {
|
|
|
112
114
|
undefined,
|
|
113
115
|
undefined,
|
|
114
116
|
);
|
|
117
|
+
|
|
118
|
+
export const getEscapedText =
|
|
119
|
+
(printer: ts.Printer) =>
|
|
120
|
+
(input: ts.Expression): string =>
|
|
121
|
+
printer.printNode(
|
|
122
|
+
ts.EmitHint.Expression,
|
|
123
|
+
input,
|
|
124
|
+
input.getSourceFile(),
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
export const transpile =
|
|
128
|
+
(context: ts.TransformationContext) =>
|
|
129
|
+
(script: string) =>
|
|
130
|
+
(input: ts.Expression): ts.Expression => {
|
|
131
|
+
const file: ts.SourceFile = ts.createSourceFile(
|
|
132
|
+
`${RandomGenerator.uuid()}.ts`,
|
|
133
|
+
script,
|
|
134
|
+
ts.ScriptTarget.ESNext,
|
|
135
|
+
true,
|
|
136
|
+
ts.ScriptKind.TS,
|
|
137
|
+
);
|
|
138
|
+
const statement: ts.Statement | undefined = file.statements[0];
|
|
139
|
+
if (statement === undefined)
|
|
140
|
+
throw new ReferenceError(
|
|
141
|
+
"Error on ExpressionFactory.transpile(): no statement exists.",
|
|
142
|
+
);
|
|
143
|
+
else if (!ts.isExpressionStatement(statement))
|
|
144
|
+
throw new TypeError(
|
|
145
|
+
"Error on ExpressionFactory.transpile(): statement is not an expression statement.",
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
const visitor = (node: ts.Node): ts.Node => {
|
|
149
|
+
if (ts.isIdentifier(node) && node.text === "$input")
|
|
150
|
+
return input;
|
|
151
|
+
return ts.visitEachChild(
|
|
152
|
+
(ts.factory as any).cloneNode(node),
|
|
153
|
+
visitor,
|
|
154
|
+
context,
|
|
155
|
+
);
|
|
156
|
+
};
|
|
157
|
+
return visitor(statement.expression) as ts.Expression;
|
|
158
|
+
};
|
|
115
159
|
}
|
|
@@ -17,6 +17,21 @@ export namespace IdentifierFactory {
|
|
|
17
17
|
: ts.factory.createPropertyAccessExpression(target, postfix);
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
export const getName = (input: ts.Expression): string => {
|
|
21
|
+
const value: any = (input as any).escapedText?.toString();
|
|
22
|
+
if (typeof value === "string") return value;
|
|
23
|
+
|
|
24
|
+
if (ts.isPropertyAccessExpression(input))
|
|
25
|
+
return `${getName(
|
|
26
|
+
input.expression,
|
|
27
|
+
)}.${input.name.escapedText.toString()}`;
|
|
28
|
+
else if (ts.isElementAccessExpression(input))
|
|
29
|
+
return `${getName(input.expression)}[${getName(
|
|
30
|
+
input.argumentExpression,
|
|
31
|
+
)}]`;
|
|
32
|
+
return "uknown";
|
|
33
|
+
};
|
|
34
|
+
|
|
20
35
|
export const postfix = (str: string): string =>
|
|
21
36
|
Escaper.variable(str)
|
|
22
37
|
? `".${str}"`
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
|
|
3
|
+
import { Metadata } from "../schemas/metadata/Metadata";
|
|
4
|
+
|
|
5
|
+
import { TransformerError } from "../transformers/TransformerError";
|
|
6
|
+
|
|
7
|
+
import { MetadataCollection } from "./MetadataCollection";
|
|
8
|
+
import { MetadataFactory } from "./MetadataFactory";
|
|
9
|
+
|
|
10
|
+
export namespace JsonMetadataFactory {
|
|
11
|
+
export const analyze =
|
|
12
|
+
(method: string) =>
|
|
13
|
+
(checker: ts.TypeChecker) =>
|
|
14
|
+
(type: ts.Type): [MetadataCollection, Metadata] => {
|
|
15
|
+
const collection = new MetadataCollection();
|
|
16
|
+
const result = MetadataFactory.analyze(checker)({
|
|
17
|
+
escape: true,
|
|
18
|
+
constant: true,
|
|
19
|
+
absorb: true,
|
|
20
|
+
validate,
|
|
21
|
+
})(collection)(type);
|
|
22
|
+
if (result.success === false)
|
|
23
|
+
throw TransformerError.from(method)(result.errors);
|
|
24
|
+
return [collection, result.data];
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const validate = (meta: Metadata) => {
|
|
28
|
+
const output: string[] = [];
|
|
29
|
+
if (
|
|
30
|
+
meta.atomics.some((a) => a.type === "bigint") ||
|
|
31
|
+
meta.constants.some((c) => c.type === "bigint")
|
|
32
|
+
)
|
|
33
|
+
output.push("JSON does not support bigint type.");
|
|
34
|
+
if (
|
|
35
|
+
meta.tuples.some((t) =>
|
|
36
|
+
t.type.elements.some((e) => e.isRequired() === false),
|
|
37
|
+
) ||
|
|
38
|
+
meta.arrays.some((a) => a.type.value.isRequired() === false)
|
|
39
|
+
)
|
|
40
|
+
output.push("JSON does not support undefined type in array.");
|
|
41
|
+
return output;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
|
+
import { ExpressionFactory } from "./ExpressionFactory";
|
|
3
4
|
import { IdentifierFactory } from "./IdentifierFactory";
|
|
4
5
|
|
|
5
6
|
export namespace LiteralFactory {
|
|
@@ -11,8 +12,12 @@ export namespace LiteralFactory {
|
|
|
11
12
|
else if (typeof input === "string") return generate_string(input);
|
|
12
13
|
else if (typeof input === "boolean") return generate_value(input);
|
|
13
14
|
else if (typeof input === "number") return generate_value(input);
|
|
14
|
-
else if (typeof input === "bigint") return
|
|
15
|
-
|
|
15
|
+
else if (typeof input === "bigint") return generate_bigint(input);
|
|
16
|
+
// unreachable code
|
|
17
|
+
else
|
|
18
|
+
throw new TypeError(
|
|
19
|
+
"Error on LiteralFactory.generate(): unknown type.",
|
|
20
|
+
);
|
|
16
21
|
};
|
|
17
22
|
|
|
18
23
|
const generate_object = (obj: object): ts.ObjectLiteralExpression =>
|
|
@@ -31,9 +36,12 @@ export namespace LiteralFactory {
|
|
|
31
36
|
const generate_array = (array: any[]): ts.ArrayLiteralExpression =>
|
|
32
37
|
ts.factory.createArrayLiteralExpression(array.map(generate), true);
|
|
33
38
|
|
|
34
|
-
const generate_value = (value: number | boolean | bigint): ts.
|
|
39
|
+
const generate_value = (value: number | boolean | bigint): ts.Expression =>
|
|
35
40
|
ts.factory.createIdentifier(value.toString());
|
|
36
41
|
|
|
42
|
+
const generate_bigint = (value: bigint): ts.Expression =>
|
|
43
|
+
ExpressionFactory.bigint(value);
|
|
44
|
+
|
|
37
45
|
const generate_string = (value: string): ts.StringLiteral =>
|
|
38
46
|
ts.factory.createStringLiteral(value);
|
|
39
47
|
}
|
|
@@ -3,9 +3,9 @@ import ts from "typescript";
|
|
|
3
3
|
import { IMetadataCollection } from "../schemas/metadata/IMetadataCollection";
|
|
4
4
|
import { Metadata } from "../schemas/metadata/Metadata";
|
|
5
5
|
import { MetadataAlias } from "../schemas/metadata/MetadataAlias";
|
|
6
|
-
import {
|
|
6
|
+
import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
|
|
7
7
|
import { MetadataObject } from "../schemas/metadata/MetadataObject";
|
|
8
|
-
import {
|
|
8
|
+
import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
|
|
9
9
|
|
|
10
10
|
import { Writable } from "../typings/Writable";
|
|
11
11
|
|
|
@@ -18,19 +18,14 @@ export class MetadataCollection {
|
|
|
18
18
|
private readonly objects_: Map<ts.Type, MetadataObject>;
|
|
19
19
|
private readonly object_unions_: Map<string, MetadataObject[]>;
|
|
20
20
|
private readonly aliases_: Map<ts.Type, MetadataAlias>;
|
|
21
|
-
private readonly arrays_: Map<ts.Type,
|
|
22
|
-
private readonly tuples_: Map<ts.Type,
|
|
21
|
+
private readonly arrays_: Map<ts.Type, MetadataArrayType>;
|
|
22
|
+
private readonly tuples_: Map<ts.Type, MetadataTupleType>;
|
|
23
23
|
|
|
24
24
|
private readonly names_: Map<string, Map<ts.Type, string>>;
|
|
25
25
|
private object_index_: number;
|
|
26
26
|
private recursive_array_index_: number;
|
|
27
27
|
private recursive_tuple_index_: number;
|
|
28
28
|
|
|
29
|
-
/**
|
|
30
|
-
* @internal
|
|
31
|
-
*/
|
|
32
|
-
public readonly entire_: Set<Metadata> = new Set();
|
|
33
|
-
|
|
34
29
|
public constructor(
|
|
35
30
|
private readonly options?: Partial<MetadataCollection.IOptions>,
|
|
36
31
|
) {
|
|
@@ -61,11 +56,11 @@ export class MetadataCollection {
|
|
|
61
56
|
return [...this.object_unions_.values()];
|
|
62
57
|
}
|
|
63
58
|
|
|
64
|
-
public arrays():
|
|
59
|
+
public arrays(): MetadataArrayType[] {
|
|
65
60
|
return [...this.arrays_.values()];
|
|
66
61
|
}
|
|
67
62
|
|
|
68
|
-
public tuples():
|
|
63
|
+
public tuples(): MetadataTupleType[] {
|
|
69
64
|
return [...this.tuples_.values()];
|
|
70
65
|
}
|
|
71
66
|
|
|
@@ -149,7 +144,6 @@ export class MetadataCollection {
|
|
|
149
144
|
description: CommentFactory.description(symbol) ?? null,
|
|
150
145
|
recursive: null!,
|
|
151
146
|
nullables: [],
|
|
152
|
-
tags: [],
|
|
153
147
|
jsDocTags: symbol.getJsDocTags() ?? [],
|
|
154
148
|
});
|
|
155
149
|
this.aliases_.set(type, alias);
|
|
@@ -159,12 +153,12 @@ export class MetadataCollection {
|
|
|
159
153
|
public emplaceArray(
|
|
160
154
|
checker: ts.TypeChecker,
|
|
161
155
|
type: ts.Type,
|
|
162
|
-
): [
|
|
156
|
+
): [MetadataArrayType, boolean, (meta: Metadata) => void] {
|
|
163
157
|
const oldbie = this.arrays_.get(type);
|
|
164
158
|
if (oldbie !== undefined) return [oldbie, false, () => {}];
|
|
165
159
|
|
|
166
160
|
const $id = this.getName(checker, type);
|
|
167
|
-
const array:
|
|
161
|
+
const array: MetadataArrayType = MetadataArrayType.create({
|
|
168
162
|
name: $id,
|
|
169
163
|
value: null!,
|
|
170
164
|
index: null,
|
|
@@ -178,12 +172,12 @@ export class MetadataCollection {
|
|
|
178
172
|
public emplaceTuple(
|
|
179
173
|
checker: ts.TypeChecker,
|
|
180
174
|
type: ts.TupleType,
|
|
181
|
-
): [
|
|
175
|
+
): [MetadataTupleType, boolean, (elements: Metadata[]) => void] {
|
|
182
176
|
const oldbie = this.tuples_.get(type);
|
|
183
177
|
if (oldbie !== undefined) return [oldbie, false, () => {}];
|
|
184
178
|
|
|
185
179
|
const $id = this.getName(checker, type);
|
|
186
|
-
const tuple:
|
|
180
|
+
const tuple: MetadataTupleType = MetadataTupleType.create({
|
|
187
181
|
name: $id,
|
|
188
182
|
elements: null!,
|
|
189
183
|
index: null,
|
|
@@ -215,12 +209,18 @@ export class MetadataCollection {
|
|
|
215
209
|
/**
|
|
216
210
|
* @internal
|
|
217
211
|
*/
|
|
218
|
-
public setArrayRecursive(
|
|
212
|
+
public setArrayRecursive(
|
|
213
|
+
array: MetadataArrayType,
|
|
214
|
+
recursive: boolean,
|
|
215
|
+
): void {
|
|
219
216
|
Writable(array).recursive = recursive;
|
|
220
217
|
if (recursive) Writable(array).index = this.recursive_array_index_++;
|
|
221
218
|
}
|
|
222
219
|
|
|
223
|
-
public setTupleRecursive(
|
|
220
|
+
public setTupleRecursive(
|
|
221
|
+
tuple: MetadataTupleType,
|
|
222
|
+
recursive: boolean,
|
|
223
|
+
): void {
|
|
224
224
|
Writable(tuple).recursive = recursive;
|
|
225
225
|
if (recursive) Writable(tuple).index = this.recursive_tuple_index_++;
|
|
226
226
|
}
|