typia 9.7.1 → 10.0.0-dev.20251107
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/LICENSE +21 -21
- package/README.md +153 -153
- package/lib/AssertionGuard.d.mts +27 -25
- package/lib/AssertionGuard.d.ts +27 -25
- package/lib/CamelCase.d.mts +1 -1
- package/lib/CamelCase.d.ts +1 -1
- package/lib/IRandomGenerator.d.mts +44 -42
- package/lib/IRandomGenerator.d.ts +44 -42
- package/lib/IReadableURLSearchParams.d.mts +2 -2
- package/lib/IReadableURLSearchParams.d.ts +2 -2
- package/lib/PascalCase.d.mts +1 -1
- package/lib/PascalCase.d.ts +1 -1
- package/lib/Primitive.d.mts +20 -22
- package/lib/Primitive.d.ts +20 -22
- package/lib/Resolved.d.mts +16 -18
- package/lib/Resolved.d.ts +16 -18
- package/lib/SnakeCase.d.mts +3 -2
- package/lib/SnakeCase.d.ts +3 -2
- package/lib/TypeGuardError.d.mts +88 -61
- package/lib/TypeGuardError.d.ts +88 -61
- package/lib/TypeGuardError.js +40 -29
- package/lib/TypeGuardError.js.map +1 -1
- package/lib/TypeGuardError.mjs +70 -48
- package/lib/factories/MetadataCollection.js +4 -12
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataCollection.mjs +4 -12
- package/lib/factories/MetadataCommentTagFactory.js +5 -15
- package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
- package/lib/factories/MetadataCommentTagFactory.mjs +5 -15
- package/lib/factories/MetadataFactory.js +1 -3
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/MetadataFactory.mjs +1 -3
- package/lib/factories/ProtobufFactory.js +2 -4
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.mjs +2 -4
- package/lib/functional.d.mts +196 -195
- package/lib/functional.d.ts +196 -195
- package/lib/functional.js +18 -54
- package/lib/functional.js.map +1 -1
- package/lib/functional.mjs +18 -54
- package/lib/http.d.mts +303 -319
- package/lib/http.d.ts +303 -319
- package/lib/http.js +26 -78
- package/lib/http.js.map +1 -1
- package/lib/http.mjs +26 -78
- package/lib/internal/_ProtobufReader.d.mts +3 -9
- package/lib/internal/_ProtobufReader.d.ts +3 -9
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +3 -9
- package/lib/internal/_ProtobufSizer.d.mts +4 -12
- package/lib/internal/_ProtobufSizer.d.ts +4 -12
- package/lib/internal/_ProtobufSizer.js.map +1 -1
- package/lib/internal/_ProtobufSizer.mjs +4 -12
- package/lib/internal/_ProtobufWriter.d.mts +5 -15
- package/lib/internal/_ProtobufWriter.d.ts +5 -15
- package/lib/internal/_ProtobufWriter.js.map +1 -1
- package/lib/internal/_ProtobufWriter.mjs +5 -15
- package/lib/internal/_jsonStringifyString.d.mts +4 -4
- package/lib/internal/_jsonStringifyString.d.ts +4 -4
- package/lib/internal/_jsonStringifyString.js +4 -4
- package/lib/internal/_jsonStringifyString.mjs +4 -4
- package/lib/json.d.mts +174 -195
- package/lib/json.d.ts +174 -195
- package/lib/json.js +16 -48
- package/lib/json.js.map +1 -1
- package/lib/json.mjs +16 -48
- package/lib/llm.d.mts +275 -192
- package/lib/llm.d.ts +275 -192
- package/lib/llm.js +4 -12
- package/lib/llm.js.map +1 -1
- package/lib/llm.mjs +4 -12
- package/lib/misc.d.mts +149 -172
- package/lib/misc.d.ts +149 -172
- package/lib/misc.js +17 -51
- package/lib/misc.js.map +1 -1
- package/lib/misc.mjs +17 -51
- package/lib/module.d.mts +263 -275
- package/lib/module.d.ts +263 -275
- package/lib/module.js +18 -54
- package/lib/module.js.map +1 -1
- package/lib/module.mjs +18 -54
- package/lib/notations.d.mts +153 -174
- package/lib/notations.d.ts +153 -174
- package/lib/notations.js +24 -72
- package/lib/notations.js.map +1 -1
- package/lib/notations.mjs +24 -72
- package/lib/programmers/FeatureProgrammer.d.mts +19 -41
- package/lib/programmers/FeatureProgrammer.d.ts +19 -41
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/ImportProgrammer.js +3 -9
- package/lib/programmers/ImportProgrammer.js.map +1 -1
- package/lib/programmers/ImportProgrammer.mjs +3 -9
- package/lib/programmers/RandomProgrammer.js +6 -0
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.mjs +6 -0
- package/lib/programmers/helpers/ProtobufWire.d.mts +13 -13
- package/lib/programmers/helpers/ProtobufWire.d.ts +13 -13
- package/lib/programmers/internal/check_array_length.js +2 -6
- package/lib/programmers/internal/check_array_length.js.map +1 -1
- package/lib/programmers/internal/check_array_length.mjs +2 -6
- package/lib/programmers/internal/check_bigint.js +2 -6
- package/lib/programmers/internal/check_bigint.js.map +1 -1
- package/lib/programmers/internal/check_bigint.mjs +2 -6
- package/lib/programmers/internal/check_dynamic_key.js +2 -6
- package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_key.mjs +2 -6
- package/lib/programmers/internal/check_dynamic_properties.js +3 -9
- package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_properties.mjs +3 -9
- package/lib/programmers/internal/check_everything.js +1 -3
- package/lib/programmers/internal/check_everything.js.map +1 -1
- package/lib/programmers/internal/check_everything.mjs +1 -3
- package/lib/programmers/internal/check_native.js +2 -6
- package/lib/programmers/internal/check_native.js.map +1 -1
- package/lib/programmers/internal/check_native.mjs +2 -6
- package/lib/programmers/internal/check_number.js +2 -6
- package/lib/programmers/internal/check_number.js.map +1 -1
- package/lib/programmers/internal/check_number.mjs +2 -6
- package/lib/programmers/internal/check_object.js +2 -6
- package/lib/programmers/internal/check_object.js.map +1 -1
- package/lib/programmers/internal/check_object.mjs +2 -6
- package/lib/programmers/internal/check_string.js +2 -6
- package/lib/programmers/internal/check_string.js.map +1 -1
- package/lib/programmers/internal/check_string.mjs +2 -6
- package/lib/programmers/internal/check_template.js +1 -3
- package/lib/programmers/internal/check_template.js.map +1 -1
- package/lib/programmers/internal/check_template.mjs +1 -3
- package/lib/programmers/internal/check_union_array_like.js +1 -3
- package/lib/programmers/internal/check_union_array_like.js.map +1 -1
- package/lib/programmers/internal/check_union_array_like.mjs +1 -3
- package/lib/programmers/internal/decode_union_object.js +2 -6
- package/lib/programmers/internal/decode_union_object.js.map +1 -1
- package/lib/programmers/internal/decode_union_object.mjs +2 -6
- package/lib/programmers/internal/feature_object_entries.js +1 -3
- package/lib/programmers/internal/feature_object_entries.js.map +1 -1
- package/lib/programmers/internal/feature_object_entries.mjs +1 -3
- package/lib/programmers/internal/json_schema_escaped.js +2 -6
- package/lib/programmers/internal/json_schema_escaped.js.map +1 -1
- package/lib/programmers/internal/json_schema_escaped.mjs +2 -6
- package/lib/programmers/internal/json_schema_object.js +3 -9
- package/lib/programmers/internal/json_schema_object.js.map +1 -1
- package/lib/programmers/internal/json_schema_object.mjs +3 -9
- package/lib/programmers/internal/json_schema_station.d.mts +2 -2
- package/lib/programmers/internal/json_schema_station.d.ts +2 -2
- package/lib/programmers/internal/metadata_to_pattern.js +1 -3
- package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
- package/lib/programmers/internal/metadata_to_pattern.mjs +1 -3
- package/lib/programmers/internal/postfix_of_tuple.js +1 -3
- package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
- package/lib/programmers/internal/postfix_of_tuple.mjs +1 -3
- package/lib/programmers/internal/prune_object_properties.js +1 -3
- package/lib/programmers/internal/prune_object_properties.js.map +1 -1
- package/lib/programmers/internal/prune_object_properties.mjs +1 -3
- package/lib/programmers/internal/stringify_dynamic_properties.js +2 -6
- package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/stringify_dynamic_properties.mjs +2 -6
- package/lib/programmers/internal/stringify_native.js +1 -3
- package/lib/programmers/internal/stringify_native.js.map +1 -1
- package/lib/programmers/internal/stringify_native.mjs +1 -3
- package/lib/programmers/internal/stringify_regular_properties.js +2 -6
- package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
- package/lib/programmers/internal/stringify_regular_properties.mjs +2 -6
- package/lib/programmers/internal/template_to_pattern.js +1 -3
- package/lib/programmers/internal/template_to_pattern.js.map +1 -1
- package/lib/programmers/internal/template_to_pattern.mjs +1 -3
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js +1 -3
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
- package/lib/programmers/internal/wrap_metadata_rest_tuple.mjs +1 -3
- package/lib/programmers/json/JsonStringifyProgrammer.js +2 -2
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.mjs +2 -2
- package/lib/programmers/llm/LlmApplicationProgrammer.js +5 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.mjs +5 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -4
- package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.mjs +1 -35
- package/lib/protobuf.d.mts +290 -297
- package/lib/protobuf.d.ts +290 -297
- package/lib/protobuf.js +17 -51
- package/lib/protobuf.js.map +1 -1
- package/lib/protobuf.mjs +17 -51
- package/lib/reflect.d.mts +2 -4
- package/lib/reflect.d.ts +2 -4
- package/lib/reflect.js +1 -3
- package/lib/reflect.js.map +1 -1
- package/lib/reflect.mjs +1 -3
- package/lib/schemas/json/IJsonApplication.d.mts +4 -4
- package/lib/schemas/json/IJsonApplication.d.ts +4 -4
- package/lib/schemas/json/IJsonSchemaCollection.d.mts +73 -56
- package/lib/schemas/json/IJsonSchemaCollection.d.ts +73 -56
- package/lib/schemas/json/IJsonSchemaUnit.d.mts +83 -70
- package/lib/schemas/json/IJsonSchemaUnit.d.ts +83 -70
- package/lib/schemas/metadata/Metadata.d.mts +1 -3
- package/lib/schemas/metadata/Metadata.d.ts +1 -3
- package/lib/schemas/metadata/Metadata.js +9 -27
- package/lib/schemas/metadata/Metadata.js.map +1 -1
- package/lib/schemas/metadata/Metadata.mjs +9 -27
- package/lib/schemas/metadata/MetadataAliasType.d.mts +1 -3
- package/lib/schemas/metadata/MetadataAliasType.d.ts +1 -3
- package/lib/schemas/metadata/MetadataAliasType.js +3 -9
- package/lib/schemas/metadata/MetadataAliasType.js.map +1 -1
- package/lib/schemas/metadata/MetadataAliasType.mjs +3 -9
- package/lib/schemas/metadata/MetadataApplication.d.mts +1 -3
- package/lib/schemas/metadata/MetadataApplication.d.ts +1 -3
- package/lib/schemas/metadata/MetadataApplication.js +2 -6
- package/lib/schemas/metadata/MetadataApplication.js.map +1 -1
- package/lib/schemas/metadata/MetadataApplication.mjs +2 -6
- package/lib/schemas/metadata/MetadataArray.d.mts +1 -3
- package/lib/schemas/metadata/MetadataArray.d.ts +1 -3
- package/lib/schemas/metadata/MetadataArray.js +1 -3
- package/lib/schemas/metadata/MetadataArray.js.map +1 -1
- package/lib/schemas/metadata/MetadataArray.mjs +1 -3
- package/lib/schemas/metadata/MetadataArrayType.d.mts +1 -3
- package/lib/schemas/metadata/MetadataArrayType.d.ts +1 -3
- package/lib/schemas/metadata/MetadataArrayType.js +3 -9
- package/lib/schemas/metadata/MetadataArrayType.js.map +1 -1
- package/lib/schemas/metadata/MetadataArrayType.mjs +3 -9
- package/lib/schemas/metadata/MetadataAtomic.js +1 -3
- package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
- package/lib/schemas/metadata/MetadataAtomic.mjs +1 -3
- package/lib/schemas/metadata/MetadataEscaped.d.mts +1 -3
- package/lib/schemas/metadata/MetadataEscaped.d.ts +1 -3
- package/lib/schemas/metadata/MetadataEscaped.js +3 -9
- package/lib/schemas/metadata/MetadataEscaped.js.map +1 -1
- package/lib/schemas/metadata/MetadataEscaped.mjs +3 -9
- package/lib/schemas/metadata/MetadataFunction.d.mts +1 -3
- package/lib/schemas/metadata/MetadataFunction.d.ts +1 -3
- package/lib/schemas/metadata/MetadataFunction.js +2 -6
- package/lib/schemas/metadata/MetadataFunction.js.map +1 -1
- package/lib/schemas/metadata/MetadataFunction.mjs +2 -6
- package/lib/schemas/metadata/MetadataObject.d.mts +1 -3
- package/lib/schemas/metadata/MetadataObject.d.ts +1 -3
- package/lib/schemas/metadata/MetadataObject.js +1 -3
- package/lib/schemas/metadata/MetadataObject.js.map +1 -1
- package/lib/schemas/metadata/MetadataObject.mjs +1 -3
- package/lib/schemas/metadata/MetadataObjectType.d.mts +1 -3
- package/lib/schemas/metadata/MetadataObjectType.d.ts +1 -3
- package/lib/schemas/metadata/MetadataObjectType.js +5 -15
- package/lib/schemas/metadata/MetadataObjectType.js.map +1 -1
- package/lib/schemas/metadata/MetadataObjectType.mjs +6 -18
- package/lib/schemas/metadata/MetadataParameter.js +1 -3
- package/lib/schemas/metadata/MetadataParameter.js.map +1 -1
- package/lib/schemas/metadata/MetadataParameter.mjs +1 -3
- package/lib/schemas/metadata/MetadataProperty.d.mts +1 -3
- package/lib/schemas/metadata/MetadataProperty.d.ts +1 -3
- package/lib/schemas/metadata/MetadataProperty.js +3 -9
- package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
- package/lib/schemas/metadata/MetadataProperty.mjs +3 -9
- package/lib/schemas/metadata/MetadataTemplate.js +1 -3
- package/lib/schemas/metadata/MetadataTemplate.js.map +1 -1
- package/lib/schemas/metadata/MetadataTemplate.mjs +1 -3
- package/lib/schemas/metadata/MetadataTuple.d.mts +1 -3
- package/lib/schemas/metadata/MetadataTuple.d.ts +1 -3
- package/lib/schemas/metadata/MetadataTuple.js +2 -6
- package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
- package/lib/schemas/metadata/MetadataTuple.mjs +2 -6
- package/lib/schemas/metadata/MetadataTupleType.js +2 -6
- package/lib/schemas/metadata/MetadataTupleType.js.map +1 -1
- package/lib/schemas/metadata/MetadataTupleType.mjs +3 -9
- package/lib/tags/Constant.d.mts +16 -16
- package/lib/tags/Constant.d.ts +16 -16
- package/lib/tags/ContentMediaType.d.mts +7 -7
- package/lib/tags/ContentMediaType.d.ts +7 -7
- package/lib/tags/Default.d.mts +19 -19
- package/lib/tags/Default.d.ts +19 -19
- package/lib/tags/Example.d.mts +18 -18
- package/lib/tags/Example.d.ts +18 -18
- package/lib/tags/Examples.d.mts +23 -23
- package/lib/tags/Examples.d.ts +23 -23
- package/lib/tags/ExclusiveMaximum.d.mts +8 -5
- package/lib/tags/ExclusiveMaximum.d.ts +8 -5
- package/lib/tags/ExclusiveMinimum.d.mts +8 -5
- package/lib/tags/ExclusiveMinimum.d.ts +8 -5
- package/lib/tags/Format.d.mts +12 -8
- package/lib/tags/Format.d.ts +12 -8
- package/lib/tags/JsonSchemaPlugin.d.mts +20 -18
- package/lib/tags/JsonSchemaPlugin.d.ts +20 -18
- package/lib/tags/MaxItems.d.mts +9 -9
- package/lib/tags/MaxItems.d.ts +9 -9
- package/lib/tags/MaxLength.d.mts +6 -5
- package/lib/tags/MaxLength.d.ts +6 -5
- package/lib/tags/Maximum.d.mts +9 -7
- package/lib/tags/Maximum.d.ts +9 -7
- package/lib/tags/MinItems.d.mts +9 -9
- package/lib/tags/MinItems.d.ts +9 -9
- package/lib/tags/MinLength.d.mts +6 -5
- package/lib/tags/MinLength.d.ts +6 -5
- package/lib/tags/Minimum.d.mts +9 -7
- package/lib/tags/Minimum.d.ts +9 -7
- package/lib/tags/MultipleOf.d.mts +10 -7
- package/lib/tags/MultipleOf.d.ts +10 -7
- package/lib/tags/Pattern.d.mts +7 -4
- package/lib/tags/Pattern.d.ts +7 -4
- package/lib/tags/Sequence.d.mts +19 -17
- package/lib/tags/Sequence.d.ts +19 -17
- package/lib/tags/TagBase.d.mts +21 -28
- package/lib/tags/TagBase.d.ts +21 -28
- package/lib/tags/Type.d.mts +12 -11
- package/lib/tags/Type.d.ts +12 -11
- package/lib/tags/UniqueItems.d.mts +10 -9
- package/lib/tags/UniqueItems.d.ts +10 -9
- package/lib/tags/internal/FormatCheatSheet.d.mts +1 -3
- package/lib/tags/internal/FormatCheatSheet.d.ts +1 -3
- package/lib/tags/internal/FormatCheatSheet.js +1 -3
- package/lib/tags/internal/FormatCheatSheet.js.map +1 -1
- package/lib/tags/internal/FormatCheatSheet.mjs +1 -3
- package/lib/transformers/ITransformOptions.d.mts +27 -19
- package/lib/transformers/ITransformOptions.d.ts +27 -19
- package/lib/transformers/ImportTransformer.js +5 -10
- package/lib/transformers/ImportTransformer.js.map +1 -1
- package/lib/transformers/ImportTransformer.mjs +5 -10
- package/lib/transformers/NoTransformConfigurationError.js +1 -3
- package/lib/transformers/NoTransformConfigurationError.js.map +1 -1
- package/lib/transformers/NoTransformConfigurationError.mjs +1 -3
- package/lib/transformers/features/llm/LlmApplicationTransformer.js +1 -3
- package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmApplicationTransformer.mjs +1 -3
- package/lib/typings/Equal.d.mts +6 -6
- package/lib/typings/Equal.d.ts +6 -6
- package/package.json +121 -120
- package/src/AssertionGuard.ts +41 -39
- package/src/CamelCase.ts +75 -75
- package/src/IRandomGenerator.ts +337 -335
- package/src/IReadableURLSearchParams.ts +9 -9
- package/src/PascalCase.ts +71 -71
- package/src/Primitive.ts +90 -92
- package/src/Resolved.ts +72 -74
- package/src/SnakeCase.ts +127 -126
- package/src/TypeGuardError.ts +216 -179
- package/src/factories/MetadataCollection.ts +270 -278
- package/src/factories/MetadataCommentTagFactory.ts +632 -648
- package/src/factories/MetadataFactory.ts +402 -404
- package/src/factories/ProtobufFactory.ts +873 -875
- package/src/functional.ts +705 -740
- package/src/http.ts +972 -1040
- package/src/internal/_ProtobufReader.ts +188 -194
- package/src/internal/_ProtobufSizer.ts +137 -145
- package/src/internal/_ProtobufWriter.ts +135 -145
- package/src/internal/_jsonStringifyString.ts +42 -42
- package/src/json.ts +643 -696
- package/src/llm.ts +615 -540
- package/src/misc.ts +594 -651
- package/src/module.ts +889 -937
- package/src/notations.ts +751 -820
- package/src/programmers/FeatureProgrammer.ts +605 -627
- package/src/programmers/ImportProgrammer.ts +179 -185
- package/src/programmers/RandomProgrammer.ts +1195 -1190
- package/src/programmers/helpers/ProtobufWire.ts +34 -34
- package/src/programmers/internal/check_array_length.ts +43 -47
- package/src/programmers/internal/check_bigint.ts +46 -50
- package/src/programmers/internal/check_dynamic_key.ts +197 -201
- package/src/programmers/internal/check_dynamic_properties.ts +231 -237
- package/src/programmers/internal/check_everything.ts +21 -23
- package/src/programmers/internal/check_native.ts +23 -27
- package/src/programmers/internal/check_number.ts +108 -112
- package/src/programmers/internal/check_object.ts +72 -78
- package/src/programmers/internal/check_string.ts +46 -50
- package/src/programmers/internal/check_template.ts +46 -48
- package/src/programmers/internal/check_union_array_like.ts +331 -335
- package/src/programmers/internal/decode_union_object.ts +110 -116
- package/src/programmers/internal/feature_object_entries.ts +59 -61
- package/src/programmers/internal/json_schema_escaped.ts +78 -82
- package/src/programmers/internal/json_schema_object.ts +150 -158
- package/src/programmers/internal/json_schema_station.ts +2 -2
- package/src/programmers/internal/metadata_to_pattern.ts +40 -42
- package/src/programmers/internal/postfix_of_tuple.ts +3 -5
- package/src/programmers/internal/prune_object_properties.ts +69 -71
- package/src/programmers/internal/stringify_dynamic_properties.ts +158 -162
- package/src/programmers/internal/stringify_native.ts +5 -7
- package/src/programmers/internal/stringify_regular_properties.ts +77 -81
- package/src/programmers/internal/template_to_pattern.ts +21 -23
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +21 -23
- package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
- package/src/programmers/llm/LlmApplicationProgrammer.ts +10 -1
- package/src/programmers/llm/LlmSchemaProgrammer.ts +2 -7
- package/src/protobuf.ts +820 -861
- package/src/reflect.ts +46 -50
- package/src/schemas/json/IJsonApplication.ts +77 -77
- package/src/schemas/json/IJsonSchemaCollection.ts +212 -195
- package/src/schemas/json/IJsonSchemaUnit.ts +263 -250
- package/src/schemas/metadata/IMetadataTypeTag.ts +14 -16
- package/src/schemas/metadata/Metadata.ts +669 -687
- package/src/schemas/metadata/MetadataAliasType.ts +57 -63
- package/src/schemas/metadata/MetadataApplication.ts +40 -44
- package/src/schemas/metadata/MetadataArray.ts +47 -49
- package/src/schemas/metadata/MetadataArrayType.ts +51 -57
- package/src/schemas/metadata/MetadataAtomic.ts +85 -87
- package/src/schemas/metadata/MetadataEscaped.ts +45 -51
- package/src/schemas/metadata/MetadataFunction.ts +45 -49
- package/src/schemas/metadata/MetadataObject.ts +46 -48
- package/src/schemas/metadata/MetadataObjectType.ts +137 -149
- package/src/schemas/metadata/MetadataParameter.ts +52 -54
- package/src/schemas/metadata/MetadataProperty.ts +53 -59
- package/src/schemas/metadata/MetadataTemplate.ts +78 -80
- package/src/schemas/metadata/MetadataTuple.ts +28 -32
- package/src/schemas/metadata/MetadataTupleType.ts +61 -67
- package/src/tags/Constant.ts +47 -47
- package/src/tags/ContentMediaType.ts +27 -27
- package/src/tags/Default.ts +52 -52
- package/src/tags/Example.ts +56 -56
- package/src/tags/Examples.ts +56 -56
- package/src/tags/ExclusiveMaximum.ts +44 -41
- package/src/tags/ExclusiveMinimum.ts +44 -41
- package/src/tags/Format.ts +78 -74
- package/src/tags/JsonSchemaPlugin.ts +36 -34
- package/src/tags/MaxItems.ts +31 -31
- package/src/tags/MaxLength.ts +25 -24
- package/src/tags/Maximum.ts +39 -37
- package/src/tags/MinItems.ts +31 -31
- package/src/tags/MinLength.ts +25 -24
- package/src/tags/Minimum.ts +39 -37
- package/src/tags/MultipleOf.ts +42 -39
- package/src/tags/Pattern.ts +49 -46
- package/src/tags/Sequence.ts +37 -35
- package/src/tags/TagBase.ts +102 -109
- package/src/tags/Type.ts +64 -63
- package/src/tags/UniqueItems.ts +34 -33
- package/src/tags/internal/FormatCheatSheet.ts +71 -73
- package/src/transformers/ITransformOptions.ts +70 -62
- package/src/transformers/ImportTransformer.ts +253 -258
- package/src/transformers/NoTransformConfigurationError.ts +16 -18
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +224 -226
- package/src/typings/Equal.ts +18 -18
package/src/tags/Constant.ts
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Constant tag that adds title and description metadata to literal types.
|
|
5
|
-
*
|
|
6
|
-
* This tag enhances literal values with human-readable documentation without
|
|
7
|
-
* changing their runtime type. It's particularly useful for enum-like values
|
|
8
|
-
* where you want to provide context about what each value represents.
|
|
9
|
-
*
|
|
10
|
-
* The metadata appears in generated JSON Schema, making API documentation
|
|
11
|
-
*
|
|
12
|
-
* constant values.
|
|
13
|
-
*
|
|
14
|
-
* @
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* }
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @template
|
|
33
|
-
* @
|
|
34
|
-
*/
|
|
35
|
-
export type Constant<
|
|
36
|
-
Value extends boolean | number | string | bigint,
|
|
37
|
-
Content extends {
|
|
38
|
-
title?: string | undefined;
|
|
39
|
-
description?: string | undefined;
|
|
40
|
-
},
|
|
41
|
-
> = Value &
|
|
42
|
-
TagBase<{
|
|
43
|
-
target: "string" | "boolean" | "number" | "bigint";
|
|
44
|
-
kind: "constant";
|
|
45
|
-
value: undefined;
|
|
46
|
-
schema: Content;
|
|
47
|
-
}>;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Constant tag that adds title and description metadata to literal types.
|
|
5
|
+
*
|
|
6
|
+
* This tag enhances literal values with human-readable documentation without
|
|
7
|
+
* changing their runtime type. It's particularly useful for enum-like values
|
|
8
|
+
* where you want to provide context about what each value represents.
|
|
9
|
+
*
|
|
10
|
+
* The metadata appears in generated JSON Schema, making API documentation more
|
|
11
|
+
* descriptive and helping developers understand the meaning of specific
|
|
12
|
+
* constant values.
|
|
13
|
+
*
|
|
14
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* type Status =
|
|
18
|
+
* | Constant<"active", { title: "Active", description: "User is currently active" }>
|
|
19
|
+
* | Constant<"inactive", { title: "Inactive", description: "User account is disabled" }>
|
|
20
|
+
* | Constant<"pending", { title: "Pending", description: "Awaiting verification" }>;
|
|
21
|
+
* ```;
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* interface Config {
|
|
26
|
+
* debugLevel: Constant<0, { title: "Off", description: "No debug output" }>
|
|
27
|
+
* | Constant<1, { title: "Basic", description: "Basic logging" }>
|
|
28
|
+
* | Constant<2, { title: "Verbose", description: "Detailed debug info" }>;
|
|
29
|
+
* }
|
|
30
|
+
* ```;
|
|
31
|
+
*
|
|
32
|
+
* @template Value The literal value (boolean, number, string, or bigint)
|
|
33
|
+
* @template Content Metadata with optional title and description
|
|
34
|
+
*/
|
|
35
|
+
export type Constant<
|
|
36
|
+
Value extends boolean | number | string | bigint,
|
|
37
|
+
Content extends {
|
|
38
|
+
title?: string | undefined;
|
|
39
|
+
description?: string | undefined;
|
|
40
|
+
},
|
|
41
|
+
> = Value &
|
|
42
|
+
TagBase<{
|
|
43
|
+
target: "string" | "boolean" | "number" | "bigint";
|
|
44
|
+
kind: "constant";
|
|
45
|
+
value: undefined;
|
|
46
|
+
schema: Content;
|
|
47
|
+
}>;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* String content media type constraint tag.
|
|
5
|
-
*
|
|
6
|
-
* Specifies the MIME type of string content for proper interpretation.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Examples:
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* Common MIME types: application/json, text/html, image/jpeg, image/png,
|
|
16
|
-
* application/pdf, text/plain, application/xml, and many more.
|
|
17
|
-
*
|
|
18
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
19
|
-
*/
|
|
20
|
-
export type ContentMediaType<Value extends string> = TagBase<{
|
|
21
|
-
target: "string";
|
|
22
|
-
kind: "contentMediaType";
|
|
23
|
-
value: undefined;
|
|
24
|
-
schema: {
|
|
25
|
-
contentMediaType: Value;
|
|
26
|
-
};
|
|
27
|
-
}>;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* String content media type constraint tag.
|
|
5
|
+
*
|
|
6
|
+
* Specifies the MIME type of string content for proper interpretation. This tag
|
|
7
|
+
* serves as metadata to indicate how the string content should be interpreted,
|
|
8
|
+
* but does not perform validation on the content itself.
|
|
9
|
+
*
|
|
10
|
+
* Examples: type JsonData = string & ContentMediaType<"application/json">; //
|
|
11
|
+
* JSON string type Base64Image = string & ContentMediaType<"image/png">; //
|
|
12
|
+
* Base64 PNG type XmlContent = string & ContentMediaType<"application/xml">; //
|
|
13
|
+
* XML data
|
|
14
|
+
*
|
|
15
|
+
* Common MIME types: application/json, text/html, image/jpeg, image/png,
|
|
16
|
+
* application/pdf, text/plain, application/xml, and many more.
|
|
17
|
+
*
|
|
18
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
19
|
+
*/
|
|
20
|
+
export type ContentMediaType<Value extends string> = TagBase<{
|
|
21
|
+
target: "string";
|
|
22
|
+
kind: "contentMediaType";
|
|
23
|
+
value: undefined;
|
|
24
|
+
schema: {
|
|
25
|
+
contentMediaType: Value;
|
|
26
|
+
};
|
|
27
|
+
}>;
|
package/src/tags/Default.ts
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Default value tag that specifies a default value for properties.
|
|
5
|
-
*
|
|
6
|
-
* When a property is not provided during validation, this tag instructs
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Supported types: boolean, bigint, number, and string primitives.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* @
|
|
32
|
-
*/
|
|
33
|
-
export type Default<Value extends boolean | bigint | number | string> =
|
|
34
|
-
TagBase<{
|
|
35
|
-
target: Value extends boolean
|
|
36
|
-
? "boolean"
|
|
37
|
-
: Value extends bigint
|
|
38
|
-
? "bigint"
|
|
39
|
-
: Value extends number
|
|
40
|
-
? "number"
|
|
41
|
-
: "string";
|
|
42
|
-
kind: "default";
|
|
43
|
-
value: Value;
|
|
44
|
-
exclusive: true;
|
|
45
|
-
schema: Value extends bigint
|
|
46
|
-
? { default: Numeric<Value> }
|
|
47
|
-
: { default: Value };
|
|
48
|
-
}>;
|
|
49
|
-
|
|
50
|
-
type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
|
|
51
|
-
? N
|
|
52
|
-
: never;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Default value tag that specifies a default value for properties.
|
|
5
|
+
*
|
|
6
|
+
* When a property is not provided during validation, this tag instructs typia
|
|
7
|
+
* to use the specified default value. This is useful for optional properties
|
|
8
|
+
* that should have a specific fallback value.
|
|
9
|
+
*
|
|
10
|
+
* Supported types: boolean, bigint, number, and string primitives. Note:
|
|
11
|
+
* Default values are applied during validation, not at compile time.
|
|
12
|
+
*
|
|
13
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* interface User {
|
|
17
|
+
* name: string;
|
|
18
|
+
* active: boolean & Default<true>; // defaults to true if not provided
|
|
19
|
+
* retries: number & Default<3>; // defaults to 3 if not provided
|
|
20
|
+
* }
|
|
21
|
+
* ```;
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* interface Config {
|
|
26
|
+
* timeout: bigint & Default<5000n>; // defaults to 5000n
|
|
27
|
+
* prefix: string & Default<"user_">; // defaults to "user_"
|
|
28
|
+
* }
|
|
29
|
+
* ```;
|
|
30
|
+
*
|
|
31
|
+
* @template Value The default value (boolean, bigint, number, or string)
|
|
32
|
+
*/
|
|
33
|
+
export type Default<Value extends boolean | bigint | number | string> =
|
|
34
|
+
TagBase<{
|
|
35
|
+
target: Value extends boolean
|
|
36
|
+
? "boolean"
|
|
37
|
+
: Value extends bigint
|
|
38
|
+
? "bigint"
|
|
39
|
+
: Value extends number
|
|
40
|
+
? "number"
|
|
41
|
+
: "string";
|
|
42
|
+
kind: "default";
|
|
43
|
+
value: Value;
|
|
44
|
+
exclusive: true;
|
|
45
|
+
schema: Value extends bigint
|
|
46
|
+
? { default: Numeric<Value> }
|
|
47
|
+
: { default: Value };
|
|
48
|
+
}>;
|
|
49
|
+
|
|
50
|
+
type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
|
|
51
|
+
? N
|
|
52
|
+
: never;
|
package/src/tags/Example.ts
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Example value tag that provides a single example value for documentation.
|
|
5
|
-
*
|
|
6
|
-
* This tag adds an example value to your JSON Schema, which is useful for
|
|
7
|
-
*
|
|
8
|
-
* expected data formats. The example doesn't affect runtime validation.
|
|
9
|
-
*
|
|
10
|
-
* Use Example for a single representative value. For multiple named examples,
|
|
11
|
-
* use the Examples tag instead.
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* }
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* @
|
|
34
|
-
*/
|
|
35
|
-
export type Example<
|
|
36
|
-
Value extends
|
|
37
|
-
| boolean
|
|
38
|
-
| bigint
|
|
39
|
-
| number
|
|
40
|
-
| string
|
|
41
|
-
| object
|
|
42
|
-
| Array<unknown>
|
|
43
|
-
| null,
|
|
44
|
-
> = TagBase<{
|
|
45
|
-
target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
|
|
46
|
-
kind: "example";
|
|
47
|
-
value: Value;
|
|
48
|
-
exclusive: true;
|
|
49
|
-
schema: Value extends bigint
|
|
50
|
-
? { example: Numeric<Value> }
|
|
51
|
-
: { example: Value };
|
|
52
|
-
}>;
|
|
53
|
-
|
|
54
|
-
type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
|
|
55
|
-
? N
|
|
56
|
-
: never;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Example value tag that provides a single example value for documentation.
|
|
5
|
+
*
|
|
6
|
+
* This tag adds an example value to your JSON Schema, which is useful for API
|
|
7
|
+
* documentation, client code generation, and helping developers understand
|
|
8
|
+
* expected data formats. The example doesn't affect runtime validation.
|
|
9
|
+
*
|
|
10
|
+
* Use Example for a single representative value. For multiple named examples,
|
|
11
|
+
* use the Examples tag instead.
|
|
12
|
+
*
|
|
13
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* interface Product {
|
|
17
|
+
* name: string & Example<"iPhone 15 Pro">;
|
|
18
|
+
* price: number & Example<999.99>;
|
|
19
|
+
* inStock: boolean & Example<true>;
|
|
20
|
+
* }
|
|
21
|
+
* ```;
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* interface User {
|
|
26
|
+
* profile: {
|
|
27
|
+
* bio: string;
|
|
28
|
+
* tags: string[];
|
|
29
|
+
* } & Example<{ bio: "Software engineer", tags: ["typescript", "react"] }>;
|
|
30
|
+
* }
|
|
31
|
+
* ```;
|
|
32
|
+
*
|
|
33
|
+
* @template Value The example value (primitives, objects, arrays, or null)
|
|
34
|
+
*/
|
|
35
|
+
export type Example<
|
|
36
|
+
Value extends
|
|
37
|
+
| boolean
|
|
38
|
+
| bigint
|
|
39
|
+
| number
|
|
40
|
+
| string
|
|
41
|
+
| object
|
|
42
|
+
| Array<unknown>
|
|
43
|
+
| null,
|
|
44
|
+
> = TagBase<{
|
|
45
|
+
target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
|
|
46
|
+
kind: "example";
|
|
47
|
+
value: Value;
|
|
48
|
+
exclusive: true;
|
|
49
|
+
schema: Value extends bigint
|
|
50
|
+
? { example: Numeric<Value> }
|
|
51
|
+
: { example: Value };
|
|
52
|
+
}>;
|
|
53
|
+
|
|
54
|
+
type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
|
|
55
|
+
? N
|
|
56
|
+
: never;
|
package/src/tags/Examples.ts
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Multiple examples tag that provides named example values for documentation.
|
|
5
|
-
*
|
|
6
|
-
* Unlike the Example tag which provides a single example, Examples allows you
|
|
7
|
-
* to provide multiple labeled examples. This is particularly useful when you
|
|
8
|
-
* want to show different scenarios or use cases for the same type.
|
|
9
|
-
*
|
|
10
|
-
* The examples are added to JSON Schema as an object where keys are descriptive
|
|
11
|
-
* names and values are the example data. This helps in API documentation and
|
|
12
|
-
* test case generation.
|
|
13
|
-
*
|
|
14
|
-
* @
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* @
|
|
42
|
-
*/
|
|
43
|
-
export type Examples<
|
|
44
|
-
Value extends Record<
|
|
45
|
-
string,
|
|
46
|
-
boolean | bigint | number | string | object | Array<unknown> | null
|
|
47
|
-
>,
|
|
48
|
-
> = TagBase<{
|
|
49
|
-
target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
|
|
50
|
-
kind: "examples";
|
|
51
|
-
value: Value;
|
|
52
|
-
exclusive: true;
|
|
53
|
-
schema: {
|
|
54
|
-
examples: Value;
|
|
55
|
-
};
|
|
56
|
-
}>;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Multiple examples tag that provides named example values for documentation.
|
|
5
|
+
*
|
|
6
|
+
* Unlike the Example tag which provides a single example, Examples allows you
|
|
7
|
+
* to provide multiple labeled examples. This is particularly useful when you
|
|
8
|
+
* want to show different scenarios or use cases for the same type.
|
|
9
|
+
*
|
|
10
|
+
* The examples are added to JSON Schema as an object where keys are descriptive
|
|
11
|
+
* names and values are the example data. This helps in API documentation and
|
|
12
|
+
* test case generation.
|
|
13
|
+
*
|
|
14
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* interface PaymentRequest {
|
|
18
|
+
* amount: number & Examples<{
|
|
19
|
+
* small: 10.50,
|
|
20
|
+
* medium: 99.99,
|
|
21
|
+
* large: 1000.00
|
|
22
|
+
* }>;
|
|
23
|
+
* }
|
|
24
|
+
* ```;
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* interface UserStatus {
|
|
29
|
+
* state: string & Examples<{
|
|
30
|
+
* active: "active",
|
|
31
|
+
* inactive: "inactive",
|
|
32
|
+
* suspended: "suspended"
|
|
33
|
+
* }>;
|
|
34
|
+
* profile: object & Examples<{
|
|
35
|
+
* basic: { name: "John", age: 25 },
|
|
36
|
+
* detailed: { name: "Jane", age: 30, bio: "Developer", verified: true }
|
|
37
|
+
* }>;
|
|
38
|
+
* }
|
|
39
|
+
* ```;
|
|
40
|
+
*
|
|
41
|
+
* @template Value A record object mapping example names to example values
|
|
42
|
+
*/
|
|
43
|
+
export type Examples<
|
|
44
|
+
Value extends Record<
|
|
45
|
+
string,
|
|
46
|
+
boolean | bigint | number | string | object | Array<unknown> | null
|
|
47
|
+
>,
|
|
48
|
+
> = TagBase<{
|
|
49
|
+
target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
|
|
50
|
+
kind: "examples";
|
|
51
|
+
value: Value;
|
|
52
|
+
exclusive: true;
|
|
53
|
+
schema: {
|
|
54
|
+
examples: Value;
|
|
55
|
+
};
|
|
56
|
+
}>;
|
|
@@ -1,41 +1,44 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Exclusive maximum value constraint tag.
|
|
5
|
-
*
|
|
6
|
-
* Enforces that a numeric value must be strictly less than the specified
|
|
7
|
-
* This constraint validates that the input value
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
exclusiveMaximum: Value
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
type
|
|
40
|
-
?
|
|
41
|
-
:
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Exclusive maximum value constraint tag.
|
|
5
|
+
*
|
|
6
|
+
* Enforces that a numeric value must be strictly less than the specified
|
|
7
|
+
* maximum (not equal). This constraint validates that the input value
|
|
8
|
+
* satisfies: input < maximum.
|
|
9
|
+
*
|
|
10
|
+
* Example usage:
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* type Discount = number & tags.ExclusiveMaximum<100>; // Must be < 100
|
|
14
|
+
* type ByteValue = bigint & tags.ExclusiveMaximum<256n>; // Must be < 256
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* Note: This tag is mutually exclusive with Maximum. You cannot apply both
|
|
18
|
+
* ExclusiveMaximum and Maximum constraints to the same property.
|
|
19
|
+
*
|
|
20
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
21
|
+
* @template Value - The exclusive maximum value constraint (number or bigint
|
|
22
|
+
* literal)
|
|
23
|
+
*/
|
|
24
|
+
export type ExclusiveMaximum<Value extends number | bigint> = TagBase<{
|
|
25
|
+
target: Value extends bigint ? "bigint" : "number";
|
|
26
|
+
kind: "exclusiveMaximum";
|
|
27
|
+
value: Value;
|
|
28
|
+
validate: `$input < ${Cast<Value>}`;
|
|
29
|
+
exclusive: ["exclusiveMaximum", "maximum"];
|
|
30
|
+
schema: Value extends bigint
|
|
31
|
+
? {
|
|
32
|
+
exclusiveMaximum: Numeric<Value>;
|
|
33
|
+
}
|
|
34
|
+
: {
|
|
35
|
+
exclusiveMaximum: Value;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
|
|
39
|
+
type Cast<Value extends number | bigint> = Value extends number
|
|
40
|
+
? Value
|
|
41
|
+
: `BigInt(${Value})`;
|
|
42
|
+
type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
|
|
43
|
+
? N
|
|
44
|
+
: never;
|