typia 5.0.0-dev.20230823-2 → 5.0.0-dev.20230827
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/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/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 -5
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataCommentTagFactory.js +532 -0
- package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
- package/lib/factories/MetadataTypeTagFactory.d.ts +6 -0
- package/lib/factories/MetadataTypeTagFactory.js +207 -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 +48 -16
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/internal/metadata/emend_metadata_atomics.js +12 -6
- package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_alias.js +1 -13
- 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.js → emplace_metadata_array_type.js} +4 -4
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
- package/lib/factories/internal/metadata/emplace_metadata_object.js +0 -1
- 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/iterate_metadata_array.js +7 -3
- 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.js +20 -12
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
- package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +7 -8
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js +140 -16
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
- package/lib/factories/internal/metadata/iterate_metadata_object.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_tuple.js +6 -2
- package/lib/factories/internal/metadata/iterate_metadata_tuple.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 +90 -68
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +2 -4
- package/lib/programmers/FeatureProgrammer.js +6 -6
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.d.ts +1 -1
- package/lib/programmers/IsProgrammer.js +32 -21
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +187 -156
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +28 -10
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/helpers/AtomicPredicator.js +2 -2
- package/lib/programmers/helpers/AtomicPredicator.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_default_string.js +2 -2
- package/lib/programmers/internal/application_default_string.js.map +1 -1
- 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_resolved.js +2 -2
- package/lib/programmers/internal/application_resolved.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +39 -22
- 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/metadata_to_pattern.js +4 -4
- package/lib/programmers/internal/metadata_to_pattern.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/internal/stringify_dynamic_properties.js +2 -1
- package/lib/programmers/internal/stringify_dynamic_properties.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/JsonStringifyProgrammer.js +43 -32
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +21 -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 +2 -2
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +21 -17
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +29 -49
- 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/IMetadata.d.ts +11 -4
- 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 +5 -0
- package/lib/schemas/metadata/IMetadataAtomic.js +3 -0
- package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
- 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 +219 -159
- 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 -0
- package/lib/tags/ExclusiveMaximum.js +3 -0
- package/lib/tags/ExclusiveMaximum.js.map +1 -0
- package/lib/tags/ExclusiveMinimum.d.ts +10 -0
- package/lib/tags/ExclusiveMinimum.js +3 -0
- package/lib/tags/ExclusiveMinimum.js.map +1 -0
- package/lib/tags/Format.d.ts +8 -0
- package/lib/{schemas/metadata/ICommentTag.js → tags/Format.js} +1 -1
- package/lib/tags/Format.js.map +1 -0
- package/lib/tags/MaxItems.d.ts +8 -0
- package/lib/{schemas/metadata/IMetadataTag.js → tags/MaxItems.js} +1 -1
- package/lib/tags/MaxItems.js.map +1 -0
- package/lib/tags/MaxLength.d.ts +8 -0
- package/lib/tags/MaxLength.js +3 -0
- package/lib/tags/MaxLength.js.map +1 -0
- package/lib/tags/Maximum.d.ts +10 -0
- package/lib/tags/Maximum.js +3 -0
- package/lib/tags/Maximum.js.map +1 -0
- package/lib/tags/MinItems.d.ts +8 -0
- package/lib/tags/MinItems.js +3 -0
- package/lib/tags/MinItems.js.map +1 -0
- package/lib/tags/MinLength.d.ts +8 -0
- package/lib/tags/MinLength.js +3 -0
- package/lib/tags/MinLength.js.map +1 -0
- package/lib/tags/Minimum.d.ts +10 -0
- package/lib/tags/Minimum.js +3 -0
- package/lib/tags/Minimum.js.map +1 -0
- package/lib/tags/MultipleOf.d.ts +10 -0
- package/lib/tags/MultipleOf.js +3 -0
- package/lib/tags/MultipleOf.js.map +1 -0
- package/lib/tags/Pattern.d.ts +7 -0
- package/lib/tags/Pattern.js +3 -0
- package/lib/tags/Pattern.js.map +1 -0
- package/lib/tags/TagBase.d.ts +14 -0
- package/lib/tags/TagBase.js +3 -0
- package/lib/tags/TagBase.js.map +1 -0
- package/lib/tags/Type.d.ts +14 -0
- package/lib/tags/Type.js +3 -0
- package/lib/tags/Type.js.map +1 -0
- package/lib/tags/index.d.ts +13 -0
- package/lib/tags/index.js +30 -0
- package/lib/tags/index.js.map +1 -0
- package/lib/transformers/FileTransformer.d.ts +1 -1
- package/lib/transformers/FileTransformer.js +15 -2
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/IProject.d.ts +1 -0
- package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -2
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +2 -2
- package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscIsPruneTransformer.js +2 -2
- package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
- package/lib/typings/ProtobufAtomic.d.ts +5 -0
- package/lib/typings/ProtobufAtomic.js +3 -0
- package/lib/typings/ProtobufAtomic.js.map +1 -0
- package/package.json +2 -2
- package/src/IRandomGenerator.ts +4 -3
- package/src/factories/ExpressionFactory.ts +46 -2
- package/src/factories/IdentifierFactory.ts +15 -0
- package/src/factories/LiteralFactory.ts +10 -3
- package/src/factories/MetadataCollection.ts +18 -13
- package/src/factories/MetadataCommentTagFactory.ts +583 -0
- package/src/factories/MetadataTypeTagFactory.ts +263 -0
- package/src/factories/NumericRangeFactory.ts +33 -0
- package/src/factories/ProtobufFactory.ts +34 -18
- package/src/factories/internal/metadata/emend_metadata_atomics.ts +12 -5
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +0 -6
- package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
- package/src/factories/internal/metadata/emplace_metadata_object.ts +0 -1
- package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
- package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
- package/src/factories/internal/metadata/iterate_metadata_atomic.ts +7 -4
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +23 -16
- package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +4 -8
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +113 -16
- package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +2 -2
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
- package/src/functional/$any.ts +3 -1
- package/src/functional/$clone.ts +4 -0
- package/src/functional/Namespace.ts +0 -16
- package/src/module.ts +2 -55
- package/src/programmers/AssertProgrammer.ts +57 -21
- package/src/programmers/CheckerProgrammer.ts +81 -123
- package/src/programmers/FeatureProgrammer.ts +9 -31
- package/src/programmers/IsProgrammer.ts +53 -42
- package/src/programmers/RandomProgrammer.ts +242 -239
- package/src/programmers/ValidateProgrammer.ts +60 -21
- package/src/programmers/helpers/AtomicPredicator.ts +2 -2
- package/src/programmers/helpers/CloneJoiner.ts +57 -20
- package/src/programmers/helpers/ICheckEntry.ts +4 -3
- package/src/programmers/helpers/ProtobufUtil.ts +113 -17
- package/src/programmers/helpers/RandomJoiner.ts +11 -33
- package/src/programmers/helpers/RandomRanger.ts +16 -51
- package/src/programmers/helpers/UnionExplorer.ts +46 -51
- 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 +6 -2
- package/src/programmers/internal/application_number.ts +76 -70
- package/src/programmers/internal/application_object.ts +0 -3
- package/src/programmers/internal/application_resolved.ts +2 -2
- package/src/programmers/internal/application_schema.ts +38 -20
- 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 +4 -4
- package/src/programmers/internal/random_custom.ts +3 -3
- package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
- package/src/programmers/json/JsonStringifyProgrammer.ts +46 -41
- package/src/programmers/misc/MiscCloneProgrammer.ts +23 -27
- package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +2 -2
- package/src/programmers/misc/MiscPruneProgrammer.ts +24 -24
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +40 -74
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +154 -99
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
- package/src/schemas/json/IJsonSchema.ts +11 -38
- package/src/schemas/metadata/IMetadata.ts +11 -5
- 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 +6 -0
- package/src/schemas/metadata/IMetadataCollection.ts +4 -4
- package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
- 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 +121 -70
- 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/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 -0
- package/src/tags/ExclusiveMinimum.ts +13 -0
- package/src/tags/Format.ts +30 -0
- package/src/tags/MaxItems.ts +9 -0
- package/src/tags/MaxLength.ts +9 -0
- package/src/tags/Maximum.ts +13 -0
- package/src/tags/MinItems.ts +9 -0
- package/src/tags/MinLength.ts +9 -0
- package/src/tags/Minimum.ts +13 -0
- package/src/tags/MultipleOf.ts +15 -0
- package/src/tags/Pattern.ts +8 -0
- package/src/tags/TagBase.ts +22 -0
- package/src/tags/Type.ts +27 -0
- package/src/tags/index.ts +13 -0
- package/src/transformers/FileTransformer.ts +6 -6
- package/src/transformers/IProject.ts +1 -0
- package/src/transformers/features/json/JsonApplicationTransformer.ts +3 -2
- package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +2 -2
- package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
- package/src/typings/Atomic.ts +1 -0
- package/src/typings/ProtobufAtomic.ts +19 -0
- 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 -310
- 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.map +0 -1
- package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
- 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/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 -364
- 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
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
4
|
+
|
|
5
|
+
export class MetadataAtomic {
|
|
6
|
+
public readonly type: "boolean" | "bigint" | "number" | "string";
|
|
7
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
8
|
+
|
|
9
|
+
private name_?: string;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
private constructor(props: ClassProperties<MetadataAtomic>) {
|
|
15
|
+
this.type = props.type;
|
|
16
|
+
this.tags = props.tags;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public static create(
|
|
20
|
+
props: ClassProperties<MetadataAtomic>,
|
|
21
|
+
): MetadataAtomic {
|
|
22
|
+
return new MetadataAtomic(props);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public getName(): string {
|
|
26
|
+
return (this.name_ ??= (() => {
|
|
27
|
+
if (this.tags.length === 0) return this.type;
|
|
28
|
+
else if (this.tags.length === 1) {
|
|
29
|
+
const str: string = [
|
|
30
|
+
this.type,
|
|
31
|
+
...this.tags[0]!.map((t) => t.name),
|
|
32
|
+
].join(" & ");
|
|
33
|
+
return `(${str})`;
|
|
34
|
+
}
|
|
35
|
+
const rows: string[] = this.tags.map((row) => {
|
|
36
|
+
const str: string = row.map((t) => t.name).join(" & ");
|
|
37
|
+
return row.length === 1 ? str : `(${str})`;
|
|
38
|
+
});
|
|
39
|
+
return `(${this.type} & (${rows.join(" | ")}))`;
|
|
40
|
+
})());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -3,14 +3,12 @@ import { ClassProperties } from "../../typings/ClassProperties";
|
|
|
3
3
|
import { IJsDocTagInfo } from "./IJsDocTagInfo";
|
|
4
4
|
import { IMetadataDictionary } from "./IMetadataDictionary";
|
|
5
5
|
import { IMetadataProperty } from "./IMetadataProperty";
|
|
6
|
-
import { IMetadataTag } from "./IMetadataTag";
|
|
7
6
|
import { Metadata } from "./Metadata";
|
|
8
7
|
|
|
9
8
|
export class MetadataProperty {
|
|
10
9
|
public readonly key: Metadata;
|
|
11
10
|
public readonly value: Metadata;
|
|
12
11
|
public readonly description: string | null;
|
|
13
|
-
public readonly tags: IMetadataTag[];
|
|
14
12
|
public readonly jsDocTags: IJsDocTagInfo[];
|
|
15
13
|
|
|
16
14
|
/* -----------------------------------------------------------
|
|
@@ -23,7 +21,6 @@ export class MetadataProperty {
|
|
|
23
21
|
this.key = props.key;
|
|
24
22
|
this.value = props.value;
|
|
25
23
|
this.description = props.description;
|
|
26
|
-
this.tags = props.tags;
|
|
27
24
|
this.jsDocTags = props.jsDocTags;
|
|
28
25
|
}
|
|
29
26
|
|
|
@@ -47,7 +44,6 @@ export class MetadataProperty {
|
|
|
47
44
|
key: Metadata._From(property.key, dict),
|
|
48
45
|
value: Metadata._From(property.value, dict),
|
|
49
46
|
description: property.description,
|
|
50
|
-
tags: property.tags.slice(),
|
|
51
47
|
jsDocTags: property.jsDocTags.slice(),
|
|
52
48
|
});
|
|
53
49
|
}
|
|
@@ -57,7 +53,6 @@ export class MetadataProperty {
|
|
|
57
53
|
key: this.key.toJSON(),
|
|
58
54
|
value: this.value.toJSON(),
|
|
59
55
|
description: this.description,
|
|
60
|
-
tags: this.tags,
|
|
61
56
|
jsDocTags: this.jsDocTags,
|
|
62
57
|
};
|
|
63
58
|
}
|
|
@@ -1,58 +1,32 @@
|
|
|
1
1
|
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
2
|
|
|
3
3
|
import { IMetadataTuple } from "./IMetadataTuple";
|
|
4
|
-
import {
|
|
4
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
+
import { MetadataTupleType } from "./MetadataTupleType";
|
|
5
6
|
|
|
6
7
|
export class MetadataTuple {
|
|
7
|
-
public readonly
|
|
8
|
-
public readonly
|
|
9
|
-
|
|
10
|
-
public readonly index: number | null;
|
|
11
|
-
public readonly recursive: boolean;
|
|
12
|
-
public readonly nullables: boolean[];
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @internal
|
|
16
|
-
*/
|
|
17
|
-
public of_map?: boolean;
|
|
8
|
+
public readonly type: MetadataTupleType;
|
|
9
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
18
10
|
|
|
19
11
|
/**
|
|
20
|
-
* @
|
|
12
|
+
* @hidden
|
|
21
13
|
*/
|
|
22
14
|
private constructor(props: ClassProperties<MetadataTuple>) {
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.index = props.index;
|
|
26
|
-
this.recursive = props.recursive;
|
|
27
|
-
this.nullables = props.nullables;
|
|
15
|
+
this.type = props.type;
|
|
16
|
+
this.tags = props.tags;
|
|
28
17
|
}
|
|
29
18
|
|
|
30
19
|
/**
|
|
31
20
|
* @internal
|
|
32
21
|
*/
|
|
33
|
-
public static _From_without_elements(
|
|
34
|
-
props: Omit<IMetadataTuple, "elements">,
|
|
35
|
-
): MetadataTuple {
|
|
36
|
-
return this.create({
|
|
37
|
-
name: props.name,
|
|
38
|
-
index: props.index,
|
|
39
|
-
elements: null!,
|
|
40
|
-
recursive: props.recursive,
|
|
41
|
-
nullables: props.nullables.slice(),
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
22
|
public static create(props: ClassProperties<MetadataTuple>): MetadataTuple {
|
|
46
23
|
return new MetadataTuple(props);
|
|
47
24
|
}
|
|
48
25
|
|
|
49
26
|
public toJSON(): IMetadataTuple {
|
|
50
27
|
return {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
elements: this.elements.map((elem) => elem.toJSON()),
|
|
54
|
-
recursive: this.recursive,
|
|
55
|
-
nullables: this.nullables.slice(),
|
|
28
|
+
type: this.type.toJSON(),
|
|
29
|
+
tags: this.tags.map((row) => row.slice()),
|
|
56
30
|
};
|
|
57
31
|
}
|
|
58
32
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataTupleType } from "./IMetadataTupleType";
|
|
4
|
+
import { Metadata } from "./Metadata";
|
|
5
|
+
|
|
6
|
+
export class MetadataTupleType {
|
|
7
|
+
public readonly name: string;
|
|
8
|
+
public readonly elements: Metadata[];
|
|
9
|
+
|
|
10
|
+
public readonly index: number | null;
|
|
11
|
+
public readonly recursive: boolean;
|
|
12
|
+
public readonly nullables: boolean[];
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
public of_map?: boolean;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
private constructor(props: ClassProperties<MetadataTupleType>) {
|
|
23
|
+
this.name = props.name;
|
|
24
|
+
this.elements = props.elements;
|
|
25
|
+
this.index = props.index;
|
|
26
|
+
this.recursive = props.recursive;
|
|
27
|
+
this.nullables = props.nullables;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
public static _From_without_elements(
|
|
34
|
+
props: Omit<IMetadataTupleType, "elements">,
|
|
35
|
+
): MetadataTupleType {
|
|
36
|
+
return this.create({
|
|
37
|
+
name: props.name,
|
|
38
|
+
index: props.index,
|
|
39
|
+
elements: null!,
|
|
40
|
+
recursive: props.recursive,
|
|
41
|
+
nullables: props.nullables.slice(),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public static create(
|
|
46
|
+
props: ClassProperties<MetadataTupleType>,
|
|
47
|
+
): MetadataTupleType {
|
|
48
|
+
return new MetadataTupleType(props);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public isRest(): boolean {
|
|
52
|
+
return (
|
|
53
|
+
this.elements.length > 0 &&
|
|
54
|
+
this.elements[this.elements.length - 1]!.rest !== null
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public toJSON(): IMetadataTupleType {
|
|
59
|
+
return {
|
|
60
|
+
name: this.name,
|
|
61
|
+
index: this.index,
|
|
62
|
+
elements: this.elements.map((elem) => elem.toJSON()),
|
|
63
|
+
recursive: this.recursive,
|
|
64
|
+
nullables: this.nullables.slice(),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type ExclusiveMaximum<Value extends number | bigint> = TagBase<{
|
|
4
|
+
target: Value extends number ? "number" : "bigint";
|
|
5
|
+
kind: "exclusiveMaximum";
|
|
6
|
+
value: Value;
|
|
7
|
+
validate: `$input < ${Numeric<Value>}`;
|
|
8
|
+
exclusive: ["exclusiveMaximum", "maximum"];
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
type Numeric<Value extends number | bigint> = Value extends number
|
|
12
|
+
? Value
|
|
13
|
+
: `BigInt(${Value})`;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type ExclusiveMinimum<Value extends number | bigint> = TagBase<{
|
|
4
|
+
target: Value extends number ? "number" : "bigint";
|
|
5
|
+
kind: "exclusiveMinimum";
|
|
6
|
+
value: Value;
|
|
7
|
+
validate: `${Numeric<Value>} < $input`;
|
|
8
|
+
exclusive: ["exclusiveMinimum", "minimum"];
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
type Numeric<Value extends number | bigint> = Value extends number
|
|
12
|
+
? Value
|
|
13
|
+
: `BigInt(${Value})`;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type Format<
|
|
4
|
+
Value extends
|
|
5
|
+
| "email"
|
|
6
|
+
| "uuid"
|
|
7
|
+
| "ipv4"
|
|
8
|
+
| "ipv6"
|
|
9
|
+
| "url"
|
|
10
|
+
| "date"
|
|
11
|
+
| "date-time",
|
|
12
|
+
> = TagBase<{
|
|
13
|
+
target: "string";
|
|
14
|
+
kind: "format";
|
|
15
|
+
value: Value;
|
|
16
|
+
validate: Value extends "email"
|
|
17
|
+
? `/^(([^<>()[\\]\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\"]+)*)|(\\".+\\"))@(([^<>()[\\]\\.,;:\\s@\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\"]{2,})$/i.test($input)`
|
|
18
|
+
: Value extends "uuid"
|
|
19
|
+
? `/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i.test($input)`
|
|
20
|
+
: Value extends "ipv4"
|
|
21
|
+
? `/^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test($input)`
|
|
22
|
+
: Value extends "ipv6"
|
|
23
|
+
? `/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/.test($input)`
|
|
24
|
+
: Value extends "url"
|
|
25
|
+
? `/^[a-zA-Z0-9]+:\\/\\/(?:www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/.test($input)`
|
|
26
|
+
: Value extends "date"
|
|
27
|
+
? `/^(\\d{4})-(\\d{2})-(\\d{2})$/.test($input)`
|
|
28
|
+
: `!isNaN(new Date($input).getTime())`;
|
|
29
|
+
exclusive: ["pattern"];
|
|
30
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type Maximum<Value extends number | bigint> = TagBase<{
|
|
4
|
+
target: Value extends number ? "number" : "bigint";
|
|
5
|
+
kind: "maximum";
|
|
6
|
+
value: Value;
|
|
7
|
+
validate: `$input <= ${Numeric<Value>}`;
|
|
8
|
+
exclusive: ["maximum", "exclusiveMaximum"];
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
type Numeric<Value extends number | bigint> = Value extends number
|
|
12
|
+
? Value
|
|
13
|
+
: `BigInt(${Value})`;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type Minimum<Value extends number | bigint> = TagBase<{
|
|
4
|
+
target: Value extends number ? "number" : "bigint";
|
|
5
|
+
kind: "minimum";
|
|
6
|
+
value: Value;
|
|
7
|
+
validate: `${Numeric<Value>} <= $input`;
|
|
8
|
+
exclusive: ["minimum", "exclusiveMinimum"];
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
type Numeric<Value extends number | bigint> = Value extends number
|
|
12
|
+
? Value
|
|
13
|
+
: `BigInt(${Value})`;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type MultipleOf<Value extends number | bigint> = TagBase<{
|
|
4
|
+
target: Value extends bigint ? "bigint" : "number";
|
|
5
|
+
kind: "multipleOf";
|
|
6
|
+
value: Value;
|
|
7
|
+
validate: `$input % ${Numeric<Value>} === ${Value extends bigint
|
|
8
|
+
? Numeric<0n>
|
|
9
|
+
: 0}`;
|
|
10
|
+
exclusive: true;
|
|
11
|
+
}>;
|
|
12
|
+
|
|
13
|
+
type Numeric<Value extends number | bigint> = Value extends number
|
|
14
|
+
? Value
|
|
15
|
+
: `BigInt(${Value})`;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type TagBase<Props extends TagBase.IProps<any, any, any, any, any>> = {
|
|
2
|
+
"typia.tag"?: Props;
|
|
3
|
+
};
|
|
4
|
+
export namespace TagBase {
|
|
5
|
+
export interface IProps<
|
|
6
|
+
Target extends "bigint" | "number" | "string" | "array",
|
|
7
|
+
Kind extends string,
|
|
8
|
+
Value extends boolean | bigint | number | string | undefined,
|
|
9
|
+
Validate extends
|
|
10
|
+
| string
|
|
11
|
+
| {
|
|
12
|
+
[key in Target]?: string;
|
|
13
|
+
},
|
|
14
|
+
Exclusive extends boolean | string[],
|
|
15
|
+
> {
|
|
16
|
+
target: Target;
|
|
17
|
+
kind: Kind;
|
|
18
|
+
value: Value;
|
|
19
|
+
validate: Validate;
|
|
20
|
+
exclusive?: Exclusive | string[];
|
|
21
|
+
}
|
|
22
|
+
}
|
package/src/tags/Type.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type Type<
|
|
4
|
+
Value extends "int32" | "uint32" | "int64" | "uint64" | "float" | "double",
|
|
5
|
+
> = TagBase<{
|
|
6
|
+
target: Value extends "int64" | "uint64" ? "bigint" | "number" : "number";
|
|
7
|
+
kind: "type";
|
|
8
|
+
value: Value;
|
|
9
|
+
validate: Value extends "int32"
|
|
10
|
+
? `Math.floor($input) === $input && -2147483648 <= $input && $input <= 2147483647`
|
|
11
|
+
: Value extends "uint32"
|
|
12
|
+
? `Math.floor($input) === $input && 0 <= $input && $input <= 4294967295`
|
|
13
|
+
: Value extends "int64"
|
|
14
|
+
? {
|
|
15
|
+
number: `Math.floor($input) === $input && -9223372036854775808 <= $input && $input <= 9223372036854775807`;
|
|
16
|
+
bigint: `true`;
|
|
17
|
+
}
|
|
18
|
+
: Value extends "uint64"
|
|
19
|
+
? {
|
|
20
|
+
number: `Math.floor($input) === $input && 0 <= $input && $input <= 18446744073709551615`;
|
|
21
|
+
bigint: `BigInt(0) <= $input`;
|
|
22
|
+
}
|
|
23
|
+
: Value extends "float"
|
|
24
|
+
? `-1.175494351e38 <= $input && $input <= 3.4028235e38`
|
|
25
|
+
: `true`;
|
|
26
|
+
exclusive: true;
|
|
27
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./ExclusiveMaximum";
|
|
2
|
+
export * from "./ExclusiveMinimum";
|
|
3
|
+
export * from "./Format";
|
|
4
|
+
export * from "./Maximum";
|
|
5
|
+
export * from "./MaxItems";
|
|
6
|
+
export * from "./MaxLength";
|
|
7
|
+
export * from "./Minimum";
|
|
8
|
+
export * from "./MinItems";
|
|
9
|
+
export * from "./MinLength";
|
|
10
|
+
export * from "./MultipleOf";
|
|
11
|
+
export * from "./Pattern";
|
|
12
|
+
export * from "./TagBase";
|
|
13
|
+
export * from "./Type";
|
|
@@ -5,13 +5,13 @@ import { NodeTransformer } from "./NodeTransformer";
|
|
|
5
5
|
|
|
6
6
|
export namespace FileTransformer {
|
|
7
7
|
export const transform =
|
|
8
|
-
(project: IProject) =>
|
|
8
|
+
(project: Omit<IProject, "context">) =>
|
|
9
9
|
(context: ts.TransformationContext) =>
|
|
10
10
|
(file: ts.SourceFile): ts.SourceFile => {
|
|
11
11
|
if (file.isDeclarationFile) return file;
|
|
12
12
|
return ts.visitEachChild(
|
|
13
13
|
file,
|
|
14
|
-
(node) => iterate_node(project)(context)(node),
|
|
14
|
+
(node) => iterate_node({ ...project, context })(context)(node),
|
|
15
15
|
context,
|
|
16
16
|
);
|
|
17
17
|
};
|
|
@@ -34,13 +34,13 @@ export namespace FileTransformer {
|
|
|
34
34
|
} catch (exp) {
|
|
35
35
|
if (!(exp instanceof Error)) throw exp;
|
|
36
36
|
|
|
37
|
-
const file: ts.SourceFile = node.getSourceFile();
|
|
37
|
+
const file: ts.SourceFile | undefined = node.getSourceFile();
|
|
38
|
+
if (file === undefined) throw exp;
|
|
39
|
+
|
|
38
40
|
const { line, character } = file.getLineAndCharacterOfPosition(
|
|
39
41
|
node.pos,
|
|
40
42
|
);
|
|
41
|
-
|
|
42
|
-
character + 1
|
|
43
|
-
}`;
|
|
43
|
+
console.error(`${file.fileName}:${line}:${character}:`, exp);
|
|
44
44
|
throw exp;
|
|
45
45
|
}
|
|
46
46
|
};
|
|
@@ -54,11 +54,12 @@ export namespace JsonApplicationTransformer {
|
|
|
54
54
|
constant: true,
|
|
55
55
|
absorb: false,
|
|
56
56
|
validate: (meta) => {
|
|
57
|
-
if (meta.atomics.find((
|
|
57
|
+
if (meta.atomics.find((atom) => atom.type === "bigint"))
|
|
58
58
|
throw new Error(NO_BIGIT);
|
|
59
59
|
else if (
|
|
60
60
|
meta.arrays.some(
|
|
61
|
-
(array) =>
|
|
61
|
+
(array) =>
|
|
62
|
+
array.type.value.isRequired() === false,
|
|
62
63
|
)
|
|
63
64
|
)
|
|
64
65
|
throw new Error(NO_UNDEFINED_IN_ARRAY);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MiscIsPruneProgrammer } from "../../../programmers/misc/MiscIsPruneProgrammer";
|
|
2
2
|
|
|
3
3
|
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
4
4
|
|
|
5
5
|
export namespace MiscCreateIsPruneTransformer {
|
|
6
6
|
export const transform = GenericTransformer.factory("createIsPrune")(
|
|
7
|
-
(project) => (modulo) =>
|
|
7
|
+
(project) => (modulo) => MiscIsPruneProgrammer.write(project)(modulo),
|
|
8
8
|
);
|
|
9
9
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MiscIsPruneProgrammer } from "../../../programmers/misc/MiscIsPruneProgrammer";
|
|
2
2
|
|
|
3
3
|
import { GenericTransformer } from "../../internal/GenericTransformer";
|
|
4
4
|
|
|
5
5
|
export namespace MiscIsPruneTransformer {
|
|
6
6
|
export const transform = GenericTransformer.scalar("isPrune")(
|
|
7
|
-
(project) => (modulo) =>
|
|
7
|
+
(project) => (modulo) => MiscIsPruneProgrammer.write(project)(modulo),
|
|
8
8
|
);
|
|
9
9
|
}
|
package/src/typings/Atomic.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ProtobufAtomic =
|
|
2
|
+
| "bool"
|
|
3
|
+
| "int32"
|
|
4
|
+
| "uint32"
|
|
5
|
+
| "int64"
|
|
6
|
+
| "uint64"
|
|
7
|
+
| "float"
|
|
8
|
+
| "double"
|
|
9
|
+
| "string";
|
|
10
|
+
export namespace ProtobufAtomic {
|
|
11
|
+
export type Numeric =
|
|
12
|
+
| "int32"
|
|
13
|
+
| "uint32"
|
|
14
|
+
| "int64"
|
|
15
|
+
| "uint64"
|
|
16
|
+
| "float"
|
|
17
|
+
| "double";
|
|
18
|
+
export type BigNumeric = "int64" | "uint64";
|
|
19
|
+
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Customizable } from "./typings/Customizable";
|
|
2
|
-
/**
|
|
3
|
-
* Map of custom validators.
|
|
4
|
-
*
|
|
5
|
-
* Map of custom validator functions, storing tag name and type of target value
|
|
6
|
-
* as key, and custom validator function as value.
|
|
7
|
-
*
|
|
8
|
-
* When you want to add a custom validation logic utilizing comment tags, you
|
|
9
|
-
* can insert a custom validator function with specific tag name and type of
|
|
10
|
-
* the target value like below.
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* typia.customValidators.insert("powerOf")("number")(
|
|
14
|
-
* (text: string) => {
|
|
15
|
-
* const denominator: number = Math.log(Number(text));
|
|
16
|
-
* return (value: number) => {
|
|
17
|
-
* value = Math.log(value) / denominator;
|
|
18
|
-
* return value === Math.floor(value);
|
|
19
|
-
* };
|
|
20
|
-
* }
|
|
21
|
-
* );
|
|
22
|
-
* typia.customValidators.insert("dollar")("string")(
|
|
23
|
-
* () => (value: string) => value.startsWith("$"),
|
|
24
|
-
* );
|
|
25
|
-
*
|
|
26
|
-
* interface TagCustom {
|
|
27
|
-
* /**
|
|
28
|
-
* * @powerOf 10
|
|
29
|
-
* *\/
|
|
30
|
-
* powerOf: number;
|
|
31
|
-
*
|
|
32
|
-
* /**
|
|
33
|
-
* * @dollar
|
|
34
|
-
* *\/
|
|
35
|
-
* dollar: string;
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
40
|
-
*/
|
|
41
|
-
export interface CustomValidatorMap {
|
|
42
|
-
/**
|
|
43
|
-
* Get number of stored tags.
|
|
44
|
-
*
|
|
45
|
-
* @return Number of stored tags
|
|
46
|
-
*/
|
|
47
|
-
size(): number;
|
|
48
|
-
/**
|
|
49
|
-
* Get number of stored types of the specified tag name.
|
|
50
|
-
*
|
|
51
|
-
* In other words, number of stored custom validator functions of
|
|
52
|
-
* the specified tag name.
|
|
53
|
-
*
|
|
54
|
-
* @param name Tag name
|
|
55
|
-
* @return Number of stored types function
|
|
56
|
-
*/
|
|
57
|
-
size(name: string): number;
|
|
58
|
-
/**
|
|
59
|
-
* Test whether custom validator function exists or not.
|
|
60
|
-
*
|
|
61
|
-
* @param name Tag name
|
|
62
|
-
* @param type Type of the target value
|
|
63
|
-
* @returns Whether exists or not
|
|
64
|
-
*/
|
|
65
|
-
has: (name: string) => (type: keyof Customizable) => boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Get custom validator function.
|
|
68
|
-
*
|
|
69
|
-
* @param name Tag name
|
|
70
|
-
* @param type Type of the target value
|
|
71
|
-
* @returns Custom validator function or undefined value
|
|
72
|
-
*/
|
|
73
|
-
get(name: string): <Type extends keyof Customizable>(type: Type) => CustomValidatorMap.Closure<Type> | undefined;
|
|
74
|
-
/**
|
|
75
|
-
* Insert a new custom validator function.
|
|
76
|
-
*
|
|
77
|
-
* You can add a custom validation logic utilizing comment tags,
|
|
78
|
-
* by inserting a function which returns a boolean value, with specific
|
|
79
|
-
* tag name and type of the target value.
|
|
80
|
-
*
|
|
81
|
-
* However, if you try to insert a duplicated tag name and type, the
|
|
82
|
-
* closure function would not be enrolled and `false` value would be
|
|
83
|
-
* returned.
|
|
84
|
-
*
|
|
85
|
-
* @param name Tag name
|
|
86
|
-
* @param type Type of the target value
|
|
87
|
-
* @param closure Custom validator function
|
|
88
|
-
* @returns Whether succeeded to insert or not
|
|
89
|
-
*/
|
|
90
|
-
insert(name: string): <Type extends keyof Customizable>(type: Type) => (closure: CustomValidatorMap.Closure<Type>) => boolean;
|
|
91
|
-
/**
|
|
92
|
-
* Erase custom validator function.
|
|
93
|
-
*
|
|
94
|
-
* @param name Tag name
|
|
95
|
-
* @param type Type of the target value
|
|
96
|
-
* @returns Whether succeeded to erase or not
|
|
97
|
-
*/
|
|
98
|
-
erase(name: string): (type: keyof Customizable) => boolean;
|
|
99
|
-
}
|
|
100
|
-
export declare namespace CustomValidatorMap {
|
|
101
|
-
/**
|
|
102
|
-
* Type of closure function of custom validation.
|
|
103
|
-
*
|
|
104
|
-
* @template Type Type of the target value
|
|
105
|
-
* @param text Text of the tag. For example, if the tag is `@powerOf 10`, `text` is 10.
|
|
106
|
-
* @param value Value to validate
|
|
107
|
-
* @returns Whether the value is valid or not
|
|
108
|
-
*/
|
|
109
|
-
type Closure<Type extends keyof Customizable> = (text: string) => (value: Customizable[Type]) => boolean;
|
|
110
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomValidatorMap.js","sourceRoot":"","sources":["../src/CustomValidatorMap.ts"],"names":[],"mappings":""}
|