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
|
@@ -3,11 +3,11 @@ import ts from "typescript";
|
|
|
3
3
|
import { ExpressionFactory } from "../../factories/ExpressionFactory";
|
|
4
4
|
import { IdentifierFactory } from "../../factories/IdentifierFactory";
|
|
5
5
|
import { MetadataCollection } from "../../factories/MetadataCollection";
|
|
6
|
+
import { NumericRangeFactory } from "../../factories/NumericRangeFactory";
|
|
6
7
|
import { ProtobufFactory } from "../../factories/ProtobufFactory";
|
|
7
8
|
import { StatementFactory } from "../../factories/StatementFactory";
|
|
8
9
|
import { TypeFactory } from "../../factories/TypeFactory";
|
|
9
10
|
|
|
10
|
-
import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
|
|
11
11
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
12
12
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
13
13
|
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
@@ -15,7 +15,7 @@ import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
|
|
|
15
15
|
|
|
16
16
|
import { IProject } from "../../transformers/IProject";
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { ProtobufAtomic } from "../../typings/ProtobufAtomic";
|
|
19
19
|
|
|
20
20
|
import { FeatureProgrammer } from "../FeatureProgrammer";
|
|
21
21
|
import { IsProgrammer } from "../IsProgrammer";
|
|
@@ -128,7 +128,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
128
128
|
tracable: false,
|
|
129
129
|
postfix: "",
|
|
130
130
|
},
|
|
131
|
-
[],
|
|
132
131
|
);
|
|
133
132
|
return ts.factory.createArrowFunction(
|
|
134
133
|
undefined,
|
|
@@ -170,9 +169,8 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
170
169
|
),
|
|
171
170
|
p.value,
|
|
172
171
|
explore,
|
|
173
|
-
p.tags,
|
|
174
172
|
);
|
|
175
|
-
index += p.value
|
|
173
|
+
index += ProtobufUtil.size(p.value);
|
|
176
174
|
return [
|
|
177
175
|
ts.factory.createExpressionStatement(
|
|
178
176
|
ts.factory.createIdentifier(
|
|
@@ -205,7 +203,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
205
203
|
input: ts.Expression,
|
|
206
204
|
meta: Metadata,
|
|
207
205
|
explore: FeatureProgrammer.IExplore,
|
|
208
|
-
tags: IMetadataTag[],
|
|
209
206
|
): ts.Block => {
|
|
210
207
|
const wrapper: (block: ts.Block) => ts.Block =
|
|
211
208
|
meta.isRequired() && meta.nullable === false
|
|
@@ -263,18 +260,47 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
263
260
|
);
|
|
264
261
|
|
|
265
262
|
// STARTS FROM ATOMIC TYPES
|
|
266
|
-
const unions: IUnion[] =
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
)
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
263
|
+
const unions: IUnion[] = [];
|
|
264
|
+
const numbers = ProtobufUtil.getNumbers(meta);
|
|
265
|
+
const bigints = ProtobufUtil.getBigints(meta);
|
|
266
|
+
|
|
267
|
+
for (const atom of ProtobufUtil.getAtomics(meta))
|
|
268
|
+
if (atom === "bool")
|
|
269
|
+
unions.push({
|
|
270
|
+
type: "bool",
|
|
271
|
+
is: () =>
|
|
272
|
+
ts.factory.createStrictEquality(
|
|
273
|
+
ts.factory.createStringLiteral("boolean"),
|
|
274
|
+
ts.factory.createTypeOfExpression(input),
|
|
275
|
+
),
|
|
276
|
+
value: (index) => decode_bool(index)(input),
|
|
277
|
+
});
|
|
278
|
+
else if (
|
|
279
|
+
atom === "int32" ||
|
|
280
|
+
atom === "uint32" ||
|
|
281
|
+
atom === "float" ||
|
|
282
|
+
atom === "double"
|
|
283
|
+
)
|
|
284
|
+
unions.push(decode_number(project)(numbers)(atom)(input));
|
|
285
|
+
else if (atom === "int64" || atom === "uint64")
|
|
286
|
+
if (numbers.some((n) => n === atom))
|
|
287
|
+
unions.push(
|
|
288
|
+
decode_number(project)(numbers)(atom)(input),
|
|
289
|
+
);
|
|
290
|
+
else
|
|
291
|
+
unions.push(
|
|
292
|
+
decode_bigint(project)(bigints)(atom)(input),
|
|
293
|
+
);
|
|
294
|
+
else if (atom === "string")
|
|
295
|
+
unions.push({
|
|
296
|
+
type: "string",
|
|
297
|
+
is: () =>
|
|
298
|
+
ts.factory.createStrictEquality(
|
|
299
|
+
ts.factory.createStringLiteral("string"),
|
|
300
|
+
ts.factory.createTypeOfExpression(input),
|
|
301
|
+
),
|
|
302
|
+
value: (index) => decode_bytes("string")(index!)(input),
|
|
303
|
+
});
|
|
278
304
|
|
|
279
305
|
// CONSIDER BYTES
|
|
280
306
|
if (meta.natives.length)
|
|
@@ -298,7 +324,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
298
324
|
...explore,
|
|
299
325
|
from: "array",
|
|
300
326
|
},
|
|
301
|
-
tags,
|
|
302
327
|
),
|
|
303
328
|
});
|
|
304
329
|
|
|
@@ -315,7 +340,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
315
340
|
...explore,
|
|
316
341
|
from: "array",
|
|
317
342
|
},
|
|
318
|
-
tags,
|
|
319
343
|
),
|
|
320
344
|
});
|
|
321
345
|
|
|
@@ -336,7 +360,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
336
360
|
...explore,
|
|
337
361
|
from: "object",
|
|
338
362
|
},
|
|
339
|
-
tags,
|
|
340
363
|
),
|
|
341
364
|
});
|
|
342
365
|
|
|
@@ -388,7 +411,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
388
411
|
input: ts.Expression,
|
|
389
412
|
map: Metadata.Entry,
|
|
390
413
|
explore: FeatureProgrammer.IExplore,
|
|
391
|
-
tags: IMetadataTag[],
|
|
392
414
|
): ts.Block => {
|
|
393
415
|
const each: ts.Statement[] = [
|
|
394
416
|
ts.factory.createExpressionStatement(
|
|
@@ -405,13 +427,11 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
405
427
|
ts.factory.createIdentifier("key"),
|
|
406
428
|
map.key,
|
|
407
429
|
explore,
|
|
408
|
-
[],
|
|
409
430
|
).statements,
|
|
410
431
|
...decode(project)(importer)(2)(
|
|
411
432
|
ts.factory.createIdentifier("value"),
|
|
412
433
|
map.value,
|
|
413
434
|
explore,
|
|
414
|
-
tags,
|
|
415
435
|
).statements,
|
|
416
436
|
ts.factory.createExpressionStatement(
|
|
417
437
|
ts.factory.createCallExpression(
|
|
@@ -442,7 +462,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
442
462
|
input: ts.Expression,
|
|
443
463
|
object: MetadataObject,
|
|
444
464
|
explore: FeatureProgrammer.IExplore,
|
|
445
|
-
tags: IMetadataTag[],
|
|
446
465
|
): ts.Block => {
|
|
447
466
|
const top: MetadataProperty = object.properties[0]!;
|
|
448
467
|
if (top.key.isSoleLiteral() === false)
|
|
@@ -454,7 +473,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
454
473
|
),
|
|
455
474
|
top,
|
|
456
475
|
explore,
|
|
457
|
-
tags,
|
|
458
476
|
);
|
|
459
477
|
return ts.factory.createBlock(
|
|
460
478
|
[
|
|
@@ -502,9 +520,8 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
502
520
|
input: ts.Expression,
|
|
503
521
|
array: MetadataArray,
|
|
504
522
|
explore: FeatureProgrammer.IExplore,
|
|
505
|
-
tags: IMetadataTag[],
|
|
506
523
|
): ts.Block => {
|
|
507
|
-
const wire = get_standalone_wire(array.value
|
|
524
|
+
const wire = get_standalone_wire(array.type.value);
|
|
508
525
|
const forLoop = (index: number | null) =>
|
|
509
526
|
ts.factory.createForOfStatement(
|
|
510
527
|
undefined,
|
|
@@ -515,9 +532,8 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
515
532
|
input,
|
|
516
533
|
decode(project)(importer)(index)(
|
|
517
534
|
ts.factory.createIdentifier("elem"),
|
|
518
|
-
array.value,
|
|
535
|
+
array.type.value,
|
|
519
536
|
explore,
|
|
520
|
-
tags,
|
|
521
537
|
),
|
|
522
538
|
);
|
|
523
539
|
const length = (block: ts.Block) =>
|
|
@@ -563,56 +579,94 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
563
579
|
);
|
|
564
580
|
};
|
|
565
581
|
|
|
566
|
-
const
|
|
567
|
-
(
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
582
|
+
const decode_bool = (index: number | null) => (input: ts.Expression) =>
|
|
583
|
+
ts.factory.createBlock(
|
|
584
|
+
[
|
|
585
|
+
...(index !== null
|
|
586
|
+
? [decode_tag(ProtobufWire.VARIANT)(index)]
|
|
587
|
+
: []),
|
|
588
|
+
ts.factory.createCallExpression(
|
|
589
|
+
IdentifierFactory.access(WRITER())("bool"),
|
|
590
|
+
undefined,
|
|
591
|
+
[input],
|
|
592
|
+
),
|
|
593
|
+
].map((exp) => ts.factory.createExpressionStatement(exp)),
|
|
594
|
+
true,
|
|
595
|
+
);
|
|
596
|
+
|
|
597
|
+
const decode_number =
|
|
598
|
+
(project: IProject) =>
|
|
599
|
+
(candidates: ProtobufAtomic.Numeric[]) =>
|
|
600
|
+
(type: ProtobufAtomic.Numeric) =>
|
|
601
|
+
(input: ts.Expression): IUnion => ({
|
|
602
|
+
type,
|
|
603
|
+
is: () =>
|
|
604
|
+
candidates.length === 1
|
|
605
|
+
? ts.factory.createStrictEquality(
|
|
606
|
+
ts.factory.createStringLiteral("number"),
|
|
607
|
+
ts.factory.createTypeOfExpression(input),
|
|
608
|
+
)
|
|
609
|
+
: ts.factory.createLogicalAnd(
|
|
610
|
+
ts.factory.createStrictEquality(
|
|
611
|
+
ts.factory.createStringLiteral("number"),
|
|
612
|
+
ts.factory.createTypeOfExpression(input),
|
|
613
|
+
),
|
|
614
|
+
NumericRangeFactory.number(project.context)(type)(
|
|
615
|
+
input,
|
|
616
|
+
),
|
|
617
|
+
),
|
|
618
|
+
value: (index) =>
|
|
619
|
+
ts.factory.createBlock(
|
|
620
|
+
[
|
|
621
|
+
...(index !== null
|
|
622
|
+
? [decode_tag(get_numeric_wire(type))(index)]
|
|
623
|
+
: []),
|
|
624
|
+
ts.factory.createCallExpression(
|
|
625
|
+
IdentifierFactory.access(WRITER())(type),
|
|
626
|
+
undefined,
|
|
627
|
+
[input],
|
|
591
628
|
),
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
:
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
629
|
+
].map((exp) => ts.factory.createExpressionStatement(exp)),
|
|
630
|
+
true,
|
|
631
|
+
),
|
|
632
|
+
});
|
|
633
|
+
|
|
634
|
+
const decode_bigint =
|
|
635
|
+
(project: IProject) =>
|
|
636
|
+
(candidates: ProtobufAtomic.BigNumeric[]) =>
|
|
637
|
+
(type: ProtobufAtomic.BigNumeric) =>
|
|
638
|
+
(input: ts.Expression): IUnion => ({
|
|
639
|
+
type,
|
|
640
|
+
is: () =>
|
|
641
|
+
candidates.length === 1
|
|
642
|
+
? ts.factory.createStrictEquality(
|
|
643
|
+
ts.factory.createStringLiteral("bigint"),
|
|
644
|
+
ts.factory.createTypeOfExpression(input),
|
|
645
|
+
)
|
|
646
|
+
: ts.factory.createLogicalAnd(
|
|
647
|
+
ts.factory.createStrictEquality(
|
|
648
|
+
ts.factory.createStringLiteral("bigint"),
|
|
649
|
+
ts.factory.createTypeOfExpression(input),
|
|
650
|
+
),
|
|
651
|
+
NumericRangeFactory.bigint(project.context)(type)(
|
|
652
|
+
input,
|
|
653
|
+
),
|
|
654
|
+
),
|
|
655
|
+
value: (index) =>
|
|
656
|
+
ts.factory.createBlock(
|
|
657
|
+
[
|
|
658
|
+
...(index !== null
|
|
659
|
+
? [decode_tag(ProtobufWire.VARIANT)(index)]
|
|
660
|
+
: []),
|
|
661
|
+
ts.factory.createCallExpression(
|
|
662
|
+
IdentifierFactory.access(WRITER())(type),
|
|
663
|
+
undefined,
|
|
664
|
+
[input],
|
|
665
|
+
),
|
|
666
|
+
].map((exp) => ts.factory.createExpressionStatement(exp)),
|
|
667
|
+
true,
|
|
668
|
+
),
|
|
669
|
+
});
|
|
616
670
|
|
|
617
671
|
const decode_bytes =
|
|
618
672
|
(method: "bytes" | "string") =>
|
|
@@ -639,10 +693,7 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
639
693
|
[ts.factory.createNumericLiteral((index << 3) | wire)],
|
|
640
694
|
);
|
|
641
695
|
|
|
642
|
-
const get_standalone_wire = (
|
|
643
|
-
meta: Metadata,
|
|
644
|
-
tags: IMetadataTag[],
|
|
645
|
-
): ProtobufWire => {
|
|
696
|
+
const get_standalone_wire = (meta: Metadata): ProtobufWire => {
|
|
646
697
|
if (
|
|
647
698
|
meta.arrays.length ||
|
|
648
699
|
meta.objects.length ||
|
|
@@ -653,16 +704,25 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
653
704
|
|
|
654
705
|
const v = ProtobufUtil.getAtomics(meta)[0]!;
|
|
655
706
|
if (v === "string") return ProtobufWire.LEN;
|
|
656
|
-
else if (
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
707
|
+
else if (
|
|
708
|
+
v === "bool" ||
|
|
709
|
+
v === "int32" ||
|
|
710
|
+
v === "uint32" ||
|
|
711
|
+
v === "int64" ||
|
|
712
|
+
v === "uint64"
|
|
713
|
+
)
|
|
714
|
+
return ProtobufWire.VARIANT;
|
|
715
|
+
else if (v === "float") return ProtobufWire.I32;
|
|
716
|
+
return ProtobufWire.I64;
|
|
664
717
|
};
|
|
665
718
|
|
|
719
|
+
const get_numeric_wire = (type: ProtobufAtomic.Numeric) =>
|
|
720
|
+
type === "double"
|
|
721
|
+
? ProtobufWire.I64
|
|
722
|
+
: type === "float"
|
|
723
|
+
? ProtobufWire.I32
|
|
724
|
+
: ProtobufWire.VARIANT;
|
|
725
|
+
|
|
666
726
|
/* -----------------------------------------------------------
|
|
667
727
|
EXPLORERS
|
|
668
728
|
----------------------------------------------------------- */
|
|
@@ -675,13 +735,12 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
675
735
|
input: ts.Expression,
|
|
676
736
|
targets: MetadataObject[],
|
|
677
737
|
explore: FeatureProgrammer.IExplore,
|
|
678
|
-
tags: IMetadataTag[],
|
|
679
738
|
indexes?: Map<MetadataObject, number>,
|
|
680
739
|
): ts.Block => {
|
|
681
740
|
if (targets.length === 1)
|
|
682
741
|
return decode_object(project)(importer)(
|
|
683
742
|
indexes ? indexes.get(targets[0]!)! : index,
|
|
684
|
-
)(input, targets[0]!, explore
|
|
743
|
+
)(input, targets[0]!, explore);
|
|
685
744
|
|
|
686
745
|
const expected: string = `(${targets
|
|
687
746
|
.map((t) => t.name)
|
|
@@ -700,7 +759,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
700
759
|
i,
|
|
701
760
|
o,
|
|
702
761
|
e,
|
|
703
|
-
tags,
|
|
704
762
|
),
|
|
705
763
|
),
|
|
706
764
|
)((expr) => expr)((value, expected) =>
|
|
@@ -728,8 +786,6 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
728
786
|
tracable: false,
|
|
729
787
|
postfix: IdentifierFactory.postfix(key),
|
|
730
788
|
},
|
|
731
|
-
tags,
|
|
732
|
-
[],
|
|
733
789
|
)
|
|
734
790
|
: ExpressionFactory.isRequired(accessor);
|
|
735
791
|
return ts.factory.createIfStatement(
|
|
@@ -738,7 +794,7 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
738
794
|
ExpressionFactory.selfCall(
|
|
739
795
|
decode_object(project)(importer)(
|
|
740
796
|
indexes!.get(spec.object)!,
|
|
741
|
-
)(input, spec.object, explore
|
|
797
|
+
)(input, spec.object, explore),
|
|
742
798
|
),
|
|
743
799
|
),
|
|
744
800
|
i === array.length - 1
|
|
@@ -751,8 +807,7 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
751
807
|
input,
|
|
752
808
|
remained,
|
|
753
809
|
explore,
|
|
754
|
-
|
|
755
|
-
indexes,
|
|
810
|
+
indexes!,
|
|
756
811
|
),
|
|
757
812
|
),
|
|
758
813
|
)
|
|
@@ -3,14 +3,11 @@ import ts from "typescript";
|
|
|
3
3
|
import { MetadataCollection } from "../../factories/MetadataCollection";
|
|
4
4
|
import { ProtobufFactory } from "../../factories/ProtobufFactory";
|
|
5
5
|
|
|
6
|
-
import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
|
|
7
6
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
8
7
|
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
9
8
|
|
|
10
9
|
import { IProject } from "../../transformers/IProject";
|
|
11
10
|
|
|
12
|
-
import { Atomic } from "../../typings/Atomic";
|
|
13
|
-
|
|
14
11
|
import { MapUtil } from "../../utils/MapUtil";
|
|
15
12
|
import { NameEncoder } from "../../utils/NameEncoder";
|
|
16
13
|
|
|
@@ -85,7 +82,7 @@ export namespace ProtobufMessageProgrammer {
|
|
|
85
82
|
return obj.properties
|
|
86
83
|
.map((prop) => {
|
|
87
84
|
const key: string = prop.key.getSoleLiteral()!;
|
|
88
|
-
const type: string = decode(ptr)(prop.
|
|
85
|
+
const type: string = decode(ptr)(prop.value);
|
|
89
86
|
return type.indexOf("${name}") !== -1
|
|
90
87
|
? type.replace("${name}", key)
|
|
91
88
|
: `${
|
|
@@ -104,22 +101,20 @@ export namespace ProtobufMessageProgrammer {
|
|
|
104
101
|
----------------------------------------------------------- */
|
|
105
102
|
const decode =
|
|
106
103
|
(ptr: IPointer<number>) =>
|
|
107
|
-
(tags: IMetadataTag[]) =>
|
|
108
104
|
(meta: Metadata): string => {
|
|
109
105
|
const elements: Set<string> = new Set();
|
|
110
106
|
if (meta.natives.length) elements.add("bytes");
|
|
111
107
|
for (const atomic of ProtobufUtil.getAtomics(meta))
|
|
112
|
-
elements.add(
|
|
108
|
+
elements.add(atomic);
|
|
113
109
|
for (const array of meta.arrays)
|
|
114
|
-
elements.add(`repeated ${decode(ptr)(
|
|
110
|
+
elements.add(`repeated ${decode(ptr)(array.type.value)}`);
|
|
115
111
|
for (const obj of meta.objects)
|
|
116
112
|
elements.add(
|
|
117
113
|
is_dynamic_object(obj)
|
|
118
|
-
? decode_map(ptr)(
|
|
114
|
+
? decode_map(ptr)(obj.properties[0]!)
|
|
119
115
|
: NameEncoder.encode(obj.name),
|
|
120
116
|
);
|
|
121
|
-
for (const map of meta.maps)
|
|
122
|
-
elements.add(decode_map(ptr)(tags)(map));
|
|
117
|
+
for (const map of meta.maps) elements.add(decode_map(ptr)(map));
|
|
123
118
|
return elements.size === 1
|
|
124
119
|
? [...elements][0]!
|
|
125
120
|
: [
|
|
@@ -134,35 +129,10 @@ export namespace ProtobufMessageProgrammer {
|
|
|
134
129
|
].join("\n");
|
|
135
130
|
};
|
|
136
131
|
|
|
137
|
-
const decode_atomic =
|
|
138
|
-
(tags: IMetadataTag[]) =>
|
|
139
|
-
(literal: Atomic.Literal): string => {
|
|
140
|
-
if (literal === "boolean") return "bool";
|
|
141
|
-
else if (literal === "bigint")
|
|
142
|
-
return tags.find(
|
|
143
|
-
(t) => t.kind === "type" && t.value === "uint64",
|
|
144
|
-
)
|
|
145
|
-
? "uint64"
|
|
146
|
-
: "int64";
|
|
147
|
-
else if (literal === "number") {
|
|
148
|
-
const type = tags.find((t) => t.kind === "type") as
|
|
149
|
-
| IMetadataTag.INumberType
|
|
150
|
-
| undefined;
|
|
151
|
-
if (type?.value === undefined) return "double";
|
|
152
|
-
else if (type.value === "int") return "int32";
|
|
153
|
-
else if (type.value === "uint") return "uint32";
|
|
154
|
-
else return type.value;
|
|
155
|
-
}
|
|
156
|
-
return literal;
|
|
157
|
-
};
|
|
158
|
-
|
|
159
132
|
const decode_map =
|
|
160
133
|
(ptr: IPointer<number>) =>
|
|
161
|
-
(tags: IMetadataTag[]) =>
|
|
162
134
|
(prop: Metadata.Entry): string =>
|
|
163
|
-
`map<${decode(ptr)(
|
|
164
|
-
prop.value,
|
|
165
|
-
)}>`;
|
|
135
|
+
`map<${decode(ptr)(prop.key)}, ${decode(ptr)(prop.value)}>`;
|
|
166
136
|
}
|
|
167
137
|
|
|
168
138
|
interface Hierarchy {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
|
|
2
|
-
import { IMetadataTag } from "../metadata/IMetadataTag";
|
|
3
2
|
|
|
4
3
|
import { Atomic } from "../../typings/Atomic";
|
|
5
4
|
|
|
5
|
+
import { Type } from "../../tags/Type";
|
|
6
|
+
|
|
6
7
|
export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
|
|
7
8
|
export namespace IJsonSchema {
|
|
8
9
|
export type Known =
|
|
@@ -36,14 +37,8 @@ export namespace IJsonSchema {
|
|
|
36
37
|
default?: Atomic.Mapper[Literal];
|
|
37
38
|
}
|
|
38
39
|
export interface IString extends IAtomic<"string"> {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
*/
|
|
42
|
-
minLength?: number;
|
|
43
|
-
/**
|
|
44
|
-
* @type uint
|
|
45
|
-
*/
|
|
46
|
-
maxLength?: number;
|
|
40
|
+
minLength?: number & Type<"uint32">;
|
|
41
|
+
maxLength?: number & Type<"uint32">;
|
|
47
42
|
pattern?: string;
|
|
48
43
|
format?: string;
|
|
49
44
|
}
|
|
@@ -55,20 +50,11 @@ export namespace IJsonSchema {
|
|
|
55
50
|
multipleOf?: number;
|
|
56
51
|
}
|
|
57
52
|
export interface IInteger extends IAtomic<"integer"> {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
*/
|
|
61
|
-
minimum?: number;
|
|
62
|
-
/**
|
|
63
|
-
* @type int
|
|
64
|
-
*/
|
|
65
|
-
maximum?: number;
|
|
53
|
+
minimum?: number & Type<"int32">;
|
|
54
|
+
maximum?: number & Type<"int32">;
|
|
66
55
|
exclusiveMinimum?: boolean;
|
|
67
56
|
exclusiveMaximum?: boolean;
|
|
68
|
-
|
|
69
|
-
* @type int
|
|
70
|
-
*/
|
|
71
|
-
multipleOf?: number;
|
|
57
|
+
multipleOf?: number & Type<"int32">;
|
|
72
58
|
}
|
|
73
59
|
export interface IBoolean extends IAtomic<"boolean"> {}
|
|
74
60
|
|
|
@@ -77,26 +63,14 @@ export namespace IJsonSchema {
|
|
|
77
63
|
----------------------------------------------------------- */
|
|
78
64
|
export interface IArray extends ISignificant<"array"> {
|
|
79
65
|
items: IJsonSchema;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
*/
|
|
83
|
-
minItems?: number;
|
|
84
|
-
/**
|
|
85
|
-
* @type uint
|
|
86
|
-
*/
|
|
87
|
-
maxItems?: number;
|
|
66
|
+
minItems?: number & Type<"uint32">;
|
|
67
|
+
maxItems?: number & Type<"uint32">;
|
|
88
68
|
"x-typia-tuple"?: ITuple;
|
|
89
69
|
}
|
|
90
70
|
export interface ITuple extends ISignificant<"array"> {
|
|
91
71
|
items: IJsonSchema[];
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
*/
|
|
95
|
-
minItems: number;
|
|
96
|
-
/**
|
|
97
|
-
* @type uint
|
|
98
|
-
*/
|
|
99
|
-
maxItems?: number;
|
|
72
|
+
minItems: number & Type<"uint32">;
|
|
73
|
+
maxItems?: number & Type<"uint32">;
|
|
100
74
|
}
|
|
101
75
|
export interface IReference extends IAttribute {
|
|
102
76
|
$ref: string;
|
|
@@ -124,7 +98,6 @@ export namespace IJsonSchema {
|
|
|
124
98
|
deprecated?: boolean;
|
|
125
99
|
title?: string;
|
|
126
100
|
description?: string;
|
|
127
|
-
"x-typia-metaTags"?: IMetadataTag[];
|
|
128
101
|
"x-typia-jsDocTags"?: IJsDocTagInfo[];
|
|
129
102
|
"x-typia-required"?: boolean;
|
|
130
103
|
"x-typia-optional"?: boolean;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { IMetadataAtomic } from "./IMetadataAtomic";
|
|
3
2
|
import { IMetadataConstant } from "./IMetadataConstant";
|
|
4
3
|
import { IMetadataEntry } from "./IMetadataEntry";
|
|
5
4
|
import { IMetadataEscaped } from "./IMetadataEscaped";
|
|
5
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
6
6
|
|
|
7
7
|
export interface IMetadata {
|
|
8
8
|
any: boolean;
|
|
@@ -11,14 +11,20 @@ export interface IMetadata {
|
|
|
11
11
|
nullable: boolean;
|
|
12
12
|
functional: boolean;
|
|
13
13
|
|
|
14
|
-
atomics:
|
|
14
|
+
atomics: IMetadataAtomic[];
|
|
15
15
|
constants: IMetadataConstant[];
|
|
16
16
|
templates: IMetadata[][];
|
|
17
17
|
escaped: IMetadataEscaped | null;
|
|
18
18
|
|
|
19
19
|
rest: IMetadata | null;
|
|
20
|
-
arrays:
|
|
21
|
-
|
|
20
|
+
arrays: {
|
|
21
|
+
name: string;
|
|
22
|
+
tags: IMetadataTypeTag[][];
|
|
23
|
+
}[];
|
|
24
|
+
tuples: {
|
|
25
|
+
name: string;
|
|
26
|
+
tags: IMetadataTypeTag[][];
|
|
27
|
+
}[];
|
|
22
28
|
objects: string[];
|
|
23
29
|
aliases: string[];
|
|
24
30
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IJsDocTagInfo } from "./IJsDocTagInfo";
|
|
2
2
|
import { IMetadata } from "./IMetadata";
|
|
3
|
-
import { IMetadataTag } from "./IMetadataTag";
|
|
4
3
|
|
|
5
4
|
export interface IMetadataAlias {
|
|
6
5
|
name: string;
|
|
@@ -8,7 +7,6 @@ export interface IMetadataAlias {
|
|
|
8
7
|
nullables: boolean[];
|
|
9
8
|
|
|
10
9
|
description: string | null;
|
|
11
|
-
tags: IMetadataTag[];
|
|
12
10
|
jsDocTags: IJsDocTagInfo[];
|
|
13
11
|
recursive: boolean;
|
|
14
12
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IMetadataArrayType } from "./IMetadataArrayType";
|
|
2
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
2
3
|
|
|
3
4
|
export interface IMetadataArray {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
nullables: boolean[];
|
|
8
|
-
recursive: boolean;
|
|
9
|
-
index: number | null;
|
|
5
|
+
type: IMetadataArrayType;
|
|
6
|
+
tags: IMetadataTypeTag[][];
|
|
10
7
|
}
|