typia 9.7.0 → 9.7.2
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/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 +1 -3
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.mjs +1 -3
- 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/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/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 +32 -0
- package/lib/tags/Constant.d.ts +32 -0
- package/lib/tags/ContentMediaType.d.mts +17 -0
- package/lib/tags/ContentMediaType.d.ts +17 -0
- package/lib/tags/Default.d.mts +30 -0
- package/lib/tags/Default.d.ts +30 -0
- package/lib/tags/Example.d.mts +32 -0
- package/lib/tags/Example.d.ts +32 -0
- package/lib/tags/Examples.d.mts +40 -0
- package/lib/tags/Examples.d.ts +40 -0
- package/lib/tags/ExclusiveMaximum.d.mts +21 -0
- package/lib/tags/ExclusiveMaximum.d.ts +21 -0
- package/lib/tags/ExclusiveMinimum.d.mts +21 -0
- package/lib/tags/ExclusiveMinimum.d.ts +21 -0
- package/lib/tags/Format.d.mts +28 -0
- package/lib/tags/Format.d.ts +28 -0
- package/lib/tags/JsonSchemaPlugin.d.mts +28 -0
- package/lib/tags/JsonSchemaPlugin.d.ts +28 -0
- package/lib/tags/MaxItems.d.mts +19 -0
- package/lib/tags/MaxItems.d.ts +19 -0
- package/lib/tags/MaxLength.d.mts +13 -0
- package/lib/tags/MaxLength.d.ts +13 -0
- package/lib/tags/Maximum.d.mts +20 -0
- package/lib/tags/Maximum.d.ts +20 -0
- package/lib/tags/MinItems.d.mts +19 -0
- package/lib/tags/MinItems.d.ts +19 -0
- package/lib/tags/MinLength.d.mts +13 -0
- package/lib/tags/MinLength.d.ts +13 -0
- package/lib/tags/Minimum.d.mts +20 -0
- package/lib/tags/Minimum.d.ts +20 -0
- package/lib/tags/MultipleOf.d.mts +21 -0
- package/lib/tags/MultipleOf.d.ts +21 -0
- package/lib/tags/Pattern.d.mts +18 -0
- package/lib/tags/Pattern.d.ts +18 -0
- package/lib/tags/Sequence.d.mts +27 -0
- package/lib/tags/Sequence.d.ts +27 -0
- package/lib/tags/TagBase.d.mts +38 -18
- package/lib/tags/TagBase.d.ts +38 -18
- package/lib/tags/Type.d.mts +27 -0
- package/lib/tags/Type.d.ts +27 -0
- package/lib/tags/UniqueItems.d.mts +20 -0
- package/lib/tags/UniqueItems.d.ts +20 -0
- 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 +114 -1
- package/lib/transformers/ImportTransformer.js.map +1 -1
- package/lib/transformers/ImportTransformer.mjs +114 -1
- 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 +2 -1
- package/src/AssertionGuard.ts +27 -25
- package/src/CamelCase.ts +1 -1
- package/src/IRandomGenerator.ts +57 -47
- package/src/IReadableURLSearchParams.ts +2 -2
- package/src/PascalCase.ts +1 -1
- package/src/Primitive.ts +20 -22
- package/src/Resolved.ts +16 -18
- package/src/SnakeCase.ts +3 -2
- package/src/TypeGuardError.ts +101 -64
- package/src/factories/MetadataCollection.ts +4 -12
- package/src/factories/MetadataCommentTagFactory.ts +8 -24
- package/src/factories/MetadataFactory.ts +1 -3
- package/src/factories/ProtobufFactory.ts +1 -3
- package/src/functional.ts +214 -249
- package/src/http.ts +329 -397
- package/src/internal/_ProtobufReader.ts +3 -9
- package/src/internal/_ProtobufSizer.ts +4 -12
- package/src/internal/_ProtobufWriter.ts +5 -15
- package/src/internal/_jsonStringifyString.ts +4 -4
- package/src/json.ts +190 -243
- package/src/llm.ts +279 -204
- package/src/misc.ts +166 -223
- package/src/module.ts +281 -329
- package/src/notations.ts +177 -246
- package/src/programmers/FeatureProgrammer.ts +19 -41
- package/src/programmers/ImportProgrammer.ts +3 -9
- package/src/programmers/RandomProgrammer.ts +6 -1
- package/src/programmers/helpers/ProtobufWire.ts +13 -13
- package/src/programmers/internal/check_array_length.ts +2 -6
- package/src/programmers/internal/check_bigint.ts +2 -6
- package/src/programmers/internal/check_dynamic_key.ts +2 -6
- package/src/programmers/internal/check_dynamic_properties.ts +3 -9
- package/src/programmers/internal/check_everything.ts +1 -3
- package/src/programmers/internal/check_native.ts +2 -6
- package/src/programmers/internal/check_number.ts +2 -6
- package/src/programmers/internal/check_object.ts +3 -9
- package/src/programmers/internal/check_string.ts +2 -6
- package/src/programmers/internal/check_template.ts +1 -3
- package/src/programmers/internal/check_union_array_like.ts +2 -6
- package/src/programmers/internal/decode_union_object.ts +3 -9
- package/src/programmers/internal/feature_object_entries.ts +1 -3
- package/src/programmers/internal/json_schema_escaped.ts +2 -6
- package/src/programmers/internal/json_schema_object.ts +4 -12
- package/src/programmers/internal/metadata_to_pattern.ts +1 -3
- package/src/programmers/internal/postfix_of_tuple.ts +1 -3
- package/src/programmers/internal/prune_object_properties.ts +1 -3
- package/src/programmers/internal/stringify_dynamic_properties.ts +2 -6
- package/src/programmers/internal/stringify_native.ts +1 -3
- package/src/programmers/internal/stringify_regular_properties.ts +2 -6
- package/src/programmers/internal/template_to_pattern.ts +1 -3
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +1 -3
- package/src/protobuf.ts +307 -348
- package/src/reflect.ts +3 -7
- package/src/schemas/json/IJsonApplication.ts +4 -4
- package/src/schemas/json/IJsonSchemaCollection.ts +73 -56
- package/src/schemas/json/IJsonSchemaUnit.ts +83 -70
- package/src/schemas/metadata/IMetadataTypeTag.ts +1 -3
- package/src/schemas/metadata/Metadata.ts +9 -27
- package/src/schemas/metadata/MetadataAliasType.ts +3 -9
- package/src/schemas/metadata/MetadataApplication.ts +2 -6
- package/src/schemas/metadata/MetadataArray.ts +1 -3
- package/src/schemas/metadata/MetadataArrayType.ts +3 -9
- package/src/schemas/metadata/MetadataAtomic.ts +1 -3
- package/src/schemas/metadata/MetadataEscaped.ts +3 -9
- package/src/schemas/metadata/MetadataFunction.ts +2 -6
- package/src/schemas/metadata/MetadataObject.ts +1 -3
- package/src/schemas/metadata/MetadataObjectType.ts +6 -18
- package/src/schemas/metadata/MetadataParameter.ts +1 -3
- package/src/schemas/metadata/MetadataProperty.ts +3 -9
- package/src/schemas/metadata/MetadataTemplate.ts +1 -3
- package/src/schemas/metadata/MetadataTuple.ts +2 -6
- package/src/schemas/metadata/MetadataTupleType.ts +3 -9
- package/src/tags/Constant.ts +32 -0
- package/src/tags/ContentMediaType.ts +17 -0
- package/src/tags/Default.ts +30 -0
- package/src/tags/Example.ts +32 -0
- package/src/tags/Examples.ts +40 -0
- package/src/tags/ExclusiveMaximum.ts +21 -0
- package/src/tags/ExclusiveMinimum.ts +21 -0
- package/src/tags/Format.ts +28 -0
- package/src/tags/JsonSchemaPlugin.ts +28 -0
- package/src/tags/MaxItems.ts +19 -0
- package/src/tags/MaxLength.ts +13 -0
- package/src/tags/Maximum.ts +20 -0
- package/src/tags/MinItems.ts +19 -0
- package/src/tags/MinLength.ts +13 -0
- package/src/tags/Minimum.ts +20 -0
- package/src/tags/MultipleOf.ts +21 -0
- package/src/tags/Pattern.ts +18 -0
- package/src/tags/Sequence.ts +27 -0
- package/src/tags/TagBase.ts +38 -18
- package/src/tags/Type.ts +27 -0
- package/src/tags/UniqueItems.ts +20 -0
- package/src/tags/internal/FormatCheatSheet.ts +1 -3
- package/src/transformers/ITransformOptions.ts +27 -19
- package/src/transformers/ImportTransformer.ts +173 -1
- package/src/transformers/NoTransformConfigurationError.ts +1 -3
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +1 -3
- package/src/typings/Equal.ts +6 -6
|
@@ -19,12 +19,16 @@ var ImportTransformer;
|
|
|
19
19
|
return props.file;
|
|
20
20
|
const from = get_directory_path(path_1.default.resolve(props.file.getSourceFile().fileName));
|
|
21
21
|
const to = from.replace(props.top, props.to);
|
|
22
|
-
|
|
22
|
+
// First pass: transform relative imports
|
|
23
|
+
let transformedFile = typescript_1.default.visitEachChild(props.file, (node) => transform_node({
|
|
23
24
|
top: props.top,
|
|
24
25
|
from,
|
|
25
26
|
to,
|
|
26
27
|
node,
|
|
27
28
|
}), props.context);
|
|
29
|
+
// Second pass: remove unused typia imports
|
|
30
|
+
transformedFile = removeUnusedTypiaImports(transformedFile);
|
|
31
|
+
return transformedFile;
|
|
28
32
|
};
|
|
29
33
|
const transform_node = (props) => {
|
|
30
34
|
if (!typescript_1.default.isImportDeclaration(props.node) ||
|
|
@@ -51,4 +55,113 @@ const get_directory_path = (file) => {
|
|
|
51
55
|
split.pop();
|
|
52
56
|
return path_1.default.resolve(split.join(path_1.default.sep));
|
|
53
57
|
};
|
|
58
|
+
/** Remove unused typia imports that are only used in transformable calls */
|
|
59
|
+
const removeUnusedTypiaImports = (file) => {
|
|
60
|
+
const imports = new Map();
|
|
61
|
+
for (const stmt of file.statements) {
|
|
62
|
+
if (typescript_1.default.isImportDeclaration(stmt) === false ||
|
|
63
|
+
typescript_1.default.isStringLiteral(stmt.moduleSpecifier) === false ||
|
|
64
|
+
stmt.moduleSpecifier.text !== "typia" ||
|
|
65
|
+
stmt.importClause === undefined)
|
|
66
|
+
continue;
|
|
67
|
+
// Track default import (import typia from 'typia')
|
|
68
|
+
if (stmt.importClause.name)
|
|
69
|
+
imports.set(stmt.importClause.name.text, {
|
|
70
|
+
declaration: stmt,
|
|
71
|
+
default: true,
|
|
72
|
+
});
|
|
73
|
+
// Track named imports (import { tags } from 'typia') - keep these
|
|
74
|
+
if (stmt.importClause.namedBindings &&
|
|
75
|
+
typescript_1.default.isNamedImports(stmt.importClause.namedBindings))
|
|
76
|
+
for (const element of stmt.importClause.namedBindings.elements)
|
|
77
|
+
imports.set(element.name.text, {
|
|
78
|
+
declaration: stmt,
|
|
79
|
+
default: false,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (imports.size === 0)
|
|
83
|
+
return file; // No typia imports to check
|
|
84
|
+
// Find usage of typia identifiers that are NOT transformable calls
|
|
85
|
+
const nonTransformableUsage = new Set();
|
|
86
|
+
const checkUsage = (node) => {
|
|
87
|
+
if (typescript_1.default.isIdentifier(node) && imports.has(node.text)) {
|
|
88
|
+
const identifier = node.text;
|
|
89
|
+
// Check if this identifier is being used as part of a property access
|
|
90
|
+
if (node.parent &&
|
|
91
|
+
typescript_1.default.isPropertyAccessExpression(node.parent) &&
|
|
92
|
+
node.parent.expression === node) {
|
|
93
|
+
// This is typia.something - check if it's a transformable call pattern
|
|
94
|
+
if (!isLikelyTransformableCall(node.parent))
|
|
95
|
+
nonTransformableUsage.add(identifier);
|
|
96
|
+
}
|
|
97
|
+
else
|
|
98
|
+
// Direct usage of the typia identifier (not as property access)
|
|
99
|
+
// This is definitely non-transformable usage
|
|
100
|
+
nonTransformableUsage.add(identifier);
|
|
101
|
+
}
|
|
102
|
+
typescript_1.default.forEachChild(node, checkUsage);
|
|
103
|
+
};
|
|
104
|
+
// Check all statements except import declarations
|
|
105
|
+
for (const stmt of file.statements)
|
|
106
|
+
if (!typescript_1.default.isImportDeclaration(stmt) ||
|
|
107
|
+
!typescript_1.default.isStringLiteral(stmt.moduleSpecifier) ||
|
|
108
|
+
stmt.moduleSpecifier.text !== "typia")
|
|
109
|
+
checkUsage(stmt);
|
|
110
|
+
// Update import statements
|
|
111
|
+
const newStatements = file.statements
|
|
112
|
+
.map((stmt) => {
|
|
113
|
+
if (typescript_1.default.isImportDeclaration(stmt) &&
|
|
114
|
+
typescript_1.default.isStringLiteral(stmt.moduleSpecifier) &&
|
|
115
|
+
stmt.moduleSpecifier.text === "typia" &&
|
|
116
|
+
stmt.importClause) {
|
|
117
|
+
const newImportClause = filterTypiaImportClause(stmt.importClause, nonTransformableUsage);
|
|
118
|
+
if (newImportClause)
|
|
119
|
+
return typescript_1.default.factory.createImportDeclaration(stmt.modifiers, newImportClause, stmt.moduleSpecifier, stmt.attributes);
|
|
120
|
+
return null; // Skip adding the import if all imports are unused
|
|
121
|
+
}
|
|
122
|
+
return stmt;
|
|
123
|
+
})
|
|
124
|
+
.filter((stmt) => stmt !== null);
|
|
125
|
+
return typescript_1.default.factory.updateSourceFile(file, newStatements, file.isDeclarationFile, file.referencedFiles, file.typeReferenceDirectives, file.hasNoDefaultLib, file.libReferenceDirectives);
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Check if a property access expression looks like a transformable typia call
|
|
129
|
+
* This uses heuristics to detect patterns like typia.xxx(),
|
|
130
|
+
* typia.namespace.xxx()
|
|
131
|
+
*/
|
|
132
|
+
const isLikelyTransformableCall = (node) => {
|
|
133
|
+
// Check if this is eventually part of a call expression
|
|
134
|
+
let current = node;
|
|
135
|
+
// Walk up the chain to find if this leads to a call expression
|
|
136
|
+
// Handle patterns like: typia.xxx(), typia.namespace.xxx()
|
|
137
|
+
while (typescript_1.default.isPropertyAccessExpression(current)) {
|
|
138
|
+
current = current.parent;
|
|
139
|
+
}
|
|
140
|
+
// If the final result is a call expression, this is likely transformable
|
|
141
|
+
if (typescript_1.default.isCallExpression(current) &&
|
|
142
|
+
(current.expression === node ||
|
|
143
|
+
(typescript_1.default.isPropertyAccessExpression(current.expression) &&
|
|
144
|
+
isTypiaPropertyChain(current.expression)))) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
};
|
|
149
|
+
/** Check if a property access expression is part of a typia.xxx.yyy chain */
|
|
150
|
+
const isTypiaPropertyChain = (node) => {
|
|
151
|
+
let current = node;
|
|
152
|
+
while (typescript_1.default.isPropertyAccessExpression(current)) {
|
|
153
|
+
current = current.expression;
|
|
154
|
+
}
|
|
155
|
+
return typescript_1.default.isIdentifier(current) && current.text === "typia";
|
|
156
|
+
};
|
|
157
|
+
/** Filter import clause to remove unused default imports */
|
|
158
|
+
const filterTypiaImportClause = (importClause, usedImports) => {
|
|
159
|
+
const hasDefaultImport = importClause.name && usedImports.has(importClause.name.text);
|
|
160
|
+
const namedBindings = importClause.namedBindings; // Always keep named bindings like { tags }
|
|
161
|
+
// Return undefined if no imports are used
|
|
162
|
+
if (!hasDefaultImport && !namedBindings) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
return typescript_1.default.factory.createImportClause(importClause.isTypeOnly, hasDefaultImport ? importClause.name : undefined, namedBindings);
|
|
166
|
+
};
|
|
54
167
|
//# sourceMappingURL=ImportTransformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportTransformer.js","sourceRoot":"","sources":["../../src/transformers/ImportTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4B;AAE5B,IAAiB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ImportTransformer.js","sourceRoot":"","sources":["../../src/transformers/ImportTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4B;AAE5B,IAAiB,iBAAiB,CA6EjC;AA7ED,WAAiB,iBAAiB;IACnB,2BAAS,GACpB,CAAC,KAAmC,EAAE,EAAE,CACxC,CAAC,OAAiC,EAAE,EAAE,CACtC,CAAC,IAAmB,EAAE,EAAE,CACtB,cAAc,CAAC;QACb,GAAG,EAAE,KAAK,CAAC,IAAI;QACf,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,OAAO;QACP,IAAI;KACL,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,CAAC,KAKvB,EAAiB,EAAE;QAClB,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QAEpD,MAAM,IAAI,GAAW,kBAAkB,CACrC,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAClD,CAAC;QACF,MAAM,EAAE,GAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAErD,yCAAyC;QACzC,IAAI,eAAe,GAAG,oBAAE,CAAC,cAAc,CACrC,KAAK,CAAC,IAAI,EACV,CAAC,IAAI,EAAE,EAAE,CACP,cAAc,CAAC;YACb,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI;YACJ,EAAE;YACF,IAAI;SACL,CAAC,EACJ,KAAK,CAAC,OAAO,CACd,CAAC;QAEF,2CAA2C;QAC3C,eAAe,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;QAE5D,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAKvB,EAAE,EAAE;QACH,IACE,CAAC,oBAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YACnC,CAAC,oBAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAE/C,OAAO,KAAK,CAAC,IAAI,CAAC;QAEpB,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QACrD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QAEvC,MAAM,QAAQ,GAAW,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QAEzD,MAAM,QAAQ,GAAW,CAAC,GAAG,EAAE;YAC7B,MAAM,MAAM,GAAW,cAAI;iBACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC;iBAC5B,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACvC,SAAS,EACT,KAAK,CAAC,IAAI,CAAC,YAAY,EACvB,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACxC,KAAK,CAAC,IAAI,CAAC,YAAY,CACxB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,EA7EgB,iBAAiB,iCAAjB,iBAAiB,QA6EjC;AAED,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,MAAM,KAAK,GAAa,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,KAAK,CAAC,GAAG,EAAE,CAAC;IACZ,OAAO,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,wBAAwB,GAAG,CAAC,IAAmB,EAAiB,EAAE;IAMtE,MAAM,OAAO,GAAgC,IAAI,GAAG,EAAE,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IACE,oBAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,KAAK;YACtC,oBAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK;YAClD,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO;YACrC,IAAI,CAAC,YAAY,KAAK,SAAS;YAE/B,SAAS;QAEX,mDAAmD;QACnD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QAEL,kEAAkE;QAClE,IACE,IAAI,CAAC,YAAY,CAAC,aAAa;YAC/B,oBAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAElD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ;gBAC5D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC7B,WAAW,EAAE,IAAI;oBACjB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,4BAA4B;IAEjE,mEAAmE;IACnE,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,EAAE;QACnC,IAAI,oBAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,UAAU,GAAW,IAAI,CAAC,IAAI,CAAC;YACrC,sEAAsE;YACtE,IACE,IAAI,CAAC,MAAM;gBACX,oBAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,EAC/B,CAAC;gBACD,uEAAuE;gBACvE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC;oBACzC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;;gBACC,gEAAgE;gBAChE,6CAA6C;gBAC7C,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QACD,oBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,kDAAkD;IAClD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU;QAChC,IACE,CAAC,oBAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,oBAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO;YAErC,UAAU,CAAC,IAAI,CAAC,CAAC;IAErB,2BAA2B;IAC3B,MAAM,aAAa,GAAmB,IAAI,CAAC,UAAU;SAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IACE,oBAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,oBAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO;YACrC,IAAI,CAAC,YAAY,EACjB,CAAC;YACD,MAAM,eAAe,GAAG,uBAAuB,CAC7C,IAAI,CAAC,YAAY,EACjB,qBAAqB,CACtB,CAAC;YACF,IAAI,eAAe;gBACjB,OAAO,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACvC,IAAI,CAAC,SAAS,EACd,eAAe,EACf,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,UAAU,CAChB,CAAC;YACJ,OAAO,IAAI,CAAC,CAAC,mDAAmD;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnC,OAAO,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAChC,IAAI,EACJ,aAAa,EACb,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,sBAAsB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAChC,IAAiC,EACxB,EAAE;IACX,wDAAwD;IACxD,IAAI,OAAO,GAAY,IAAI,CAAC;IAE5B,+DAA+D;IAC/D,2DAA2D;IAC3D,OAAO,oBAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,yEAAyE;IACzE,IACE,oBAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC5B,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI;YAC1B,CAAC,oBAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,UAAU,CAAC;gBAChD,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAC9C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,oBAAoB,GAAG,CAAC,IAAiC,EAAW,EAAE;IAC1E,IAAI,OAAO,GAAkB,IAAI,CAAC;IAElC,OAAO,oBAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,OAAO,oBAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9D,CAAC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,uBAAuB,GAAG,CAC9B,YAA6B,EAC7B,WAAwB,EACK,EAAE;IAC/B,MAAM,gBAAgB,GACpB,YAAY,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,2CAA2C;IAE7F,0CAA0C;IAC1C,IAAI,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,oBAAE,CAAC,OAAO,CAAC,kBAAkB,CAClC,YAAY,CAAC,UAAU,EACvB,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAChD,aAAa,CACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -14,12 +14,16 @@ var ImportTransformer;
|
|
|
14
14
|
return props.file;
|
|
15
15
|
const from = get_directory_path(path.resolve(props.file.getSourceFile().fileName));
|
|
16
16
|
const to = from.replace(props.top, props.to);
|
|
17
|
-
|
|
17
|
+
// First pass: transform relative imports
|
|
18
|
+
let transformedFile = ts.visitEachChild(props.file, (node) => transform_node({
|
|
18
19
|
top: props.top,
|
|
19
20
|
from,
|
|
20
21
|
to,
|
|
21
22
|
node,
|
|
22
23
|
}), props.context);
|
|
24
|
+
// Second pass: remove unused typia imports
|
|
25
|
+
transformedFile = removeUnusedTypiaImports(transformedFile);
|
|
26
|
+
return transformedFile;
|
|
23
27
|
};
|
|
24
28
|
const transform_node = (props) => {
|
|
25
29
|
if (!ts.isImportDeclaration(props.node) ||
|
|
@@ -46,6 +50,115 @@ const get_directory_path = (file) => {
|
|
|
46
50
|
split.pop();
|
|
47
51
|
return path.resolve(split.join(path.sep));
|
|
48
52
|
};
|
|
53
|
+
/** Remove unused typia imports that are only used in transformable calls */
|
|
54
|
+
const removeUnusedTypiaImports = (file) => {
|
|
55
|
+
const imports = new Map();
|
|
56
|
+
for (const stmt of file.statements) {
|
|
57
|
+
if (ts.isImportDeclaration(stmt) === false ||
|
|
58
|
+
ts.isStringLiteral(stmt.moduleSpecifier) === false ||
|
|
59
|
+
stmt.moduleSpecifier.text !== "typia" ||
|
|
60
|
+
stmt.importClause === undefined)
|
|
61
|
+
continue;
|
|
62
|
+
// Track default import (import typia from 'typia')
|
|
63
|
+
if (stmt.importClause.name)
|
|
64
|
+
imports.set(stmt.importClause.name.text, {
|
|
65
|
+
declaration: stmt,
|
|
66
|
+
default: true,
|
|
67
|
+
});
|
|
68
|
+
// Track named imports (import { tags } from 'typia') - keep these
|
|
69
|
+
if (stmt.importClause.namedBindings &&
|
|
70
|
+
ts.isNamedImports(stmt.importClause.namedBindings))
|
|
71
|
+
for (const element of stmt.importClause.namedBindings.elements)
|
|
72
|
+
imports.set(element.name.text, {
|
|
73
|
+
declaration: stmt,
|
|
74
|
+
default: false,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (imports.size === 0)
|
|
78
|
+
return file; // No typia imports to check
|
|
79
|
+
// Find usage of typia identifiers that are NOT transformable calls
|
|
80
|
+
const nonTransformableUsage = new Set();
|
|
81
|
+
const checkUsage = (node) => {
|
|
82
|
+
if (ts.isIdentifier(node) && imports.has(node.text)) {
|
|
83
|
+
const identifier = node.text;
|
|
84
|
+
// Check if this identifier is being used as part of a property access
|
|
85
|
+
if (node.parent &&
|
|
86
|
+
ts.isPropertyAccessExpression(node.parent) &&
|
|
87
|
+
node.parent.expression === node) {
|
|
88
|
+
// This is typia.something - check if it's a transformable call pattern
|
|
89
|
+
if (!isLikelyTransformableCall(node.parent))
|
|
90
|
+
nonTransformableUsage.add(identifier);
|
|
91
|
+
}
|
|
92
|
+
else
|
|
93
|
+
// Direct usage of the typia identifier (not as property access)
|
|
94
|
+
// This is definitely non-transformable usage
|
|
95
|
+
nonTransformableUsage.add(identifier);
|
|
96
|
+
}
|
|
97
|
+
ts.forEachChild(node, checkUsage);
|
|
98
|
+
};
|
|
99
|
+
// Check all statements except import declarations
|
|
100
|
+
for (const stmt of file.statements)
|
|
101
|
+
if (!ts.isImportDeclaration(stmt) ||
|
|
102
|
+
!ts.isStringLiteral(stmt.moduleSpecifier) ||
|
|
103
|
+
stmt.moduleSpecifier.text !== "typia")
|
|
104
|
+
checkUsage(stmt);
|
|
105
|
+
// Update import statements
|
|
106
|
+
const newStatements = file.statements
|
|
107
|
+
.map((stmt) => {
|
|
108
|
+
if (ts.isImportDeclaration(stmt) &&
|
|
109
|
+
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
|
110
|
+
stmt.moduleSpecifier.text === "typia" &&
|
|
111
|
+
stmt.importClause) {
|
|
112
|
+
const newImportClause = filterTypiaImportClause(stmt.importClause, nonTransformableUsage);
|
|
113
|
+
if (newImportClause)
|
|
114
|
+
return ts.factory.createImportDeclaration(stmt.modifiers, newImportClause, stmt.moduleSpecifier, stmt.attributes);
|
|
115
|
+
return null; // Skip adding the import if all imports are unused
|
|
116
|
+
}
|
|
117
|
+
return stmt;
|
|
118
|
+
})
|
|
119
|
+
.filter((stmt) => stmt !== null);
|
|
120
|
+
return ts.factory.updateSourceFile(file, newStatements, file.isDeclarationFile, file.referencedFiles, file.typeReferenceDirectives, file.hasNoDefaultLib, file.libReferenceDirectives);
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Check if a property access expression looks like a transformable typia call
|
|
124
|
+
* This uses heuristics to detect patterns like typia.xxx(),
|
|
125
|
+
* typia.namespace.xxx()
|
|
126
|
+
*/
|
|
127
|
+
const isLikelyTransformableCall = (node) => {
|
|
128
|
+
// Check if this is eventually part of a call expression
|
|
129
|
+
let current = node;
|
|
130
|
+
// Walk up the chain to find if this leads to a call expression
|
|
131
|
+
// Handle patterns like: typia.xxx(), typia.namespace.xxx()
|
|
132
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
133
|
+
current = current.parent;
|
|
134
|
+
}
|
|
135
|
+
// If the final result is a call expression, this is likely transformable
|
|
136
|
+
if (ts.isCallExpression(current) &&
|
|
137
|
+
(current.expression === node ||
|
|
138
|
+
(ts.isPropertyAccessExpression(current.expression) &&
|
|
139
|
+
isTypiaPropertyChain(current.expression)))) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
};
|
|
144
|
+
/** Check if a property access expression is part of a typia.xxx.yyy chain */
|
|
145
|
+
const isTypiaPropertyChain = (node) => {
|
|
146
|
+
let current = node;
|
|
147
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
148
|
+
current = current.expression;
|
|
149
|
+
}
|
|
150
|
+
return ts.isIdentifier(current) && current.text === "typia";
|
|
151
|
+
};
|
|
152
|
+
/** Filter import clause to remove unused default imports */
|
|
153
|
+
const filterTypiaImportClause = (importClause, usedImports) => {
|
|
154
|
+
const hasDefaultImport = importClause.name && usedImports.has(importClause.name.text);
|
|
155
|
+
const namedBindings = importClause.namedBindings; // Always keep named bindings like { tags }
|
|
156
|
+
// Return undefined if no imports are used
|
|
157
|
+
if (!hasDefaultImport && !namedBindings) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
return ts.factory.createImportClause(importClause.isTypeOnly, hasDefaultImport ? importClause.name : undefined, namedBindings);
|
|
161
|
+
};
|
|
49
162
|
|
|
50
163
|
export { ImportTransformer };
|
|
51
164
|
//# sourceMappingURL=ImportTransformer.mjs.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NoTransformConfigurationError = NoTransformConfigurationError;
|
|
4
|
-
/**
|
|
5
|
-
* @internal
|
|
6
|
-
*/
|
|
4
|
+
/** @internal */
|
|
7
5
|
function NoTransformConfigurationError(name) {
|
|
8
6
|
throw new Error([
|
|
9
7
|
`Error on typia.${name}(): no transform has been configured.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoTransformConfigurationError.js","sourceRoot":"","sources":["../../src/transformers/NoTransformConfigurationError.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"NoTransformConfigurationError.js","sourceRoot":"","sources":["../../src/transformers/NoTransformConfigurationError.ts"],"names":[],"mappings":";;AACA,sEAcC;AAfD,gBAAgB;AAChB,SAAgB,6BAA6B,CAAC,IAAY;IACxD,MAAM,IAAI,KAAK,CACb;QACE,kBAAkB,IAAI,uCAAuC;QAC7D,EAAE;QACF,qDAAqD;QACrD,EAAE;QACF;YACE,yDAAyD;YACzD,0DAA0D;YAC1D,0BAA0B;SAC3B,CAAC,IAAI,CAAC,GAAG,CAAC;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -44,9 +44,7 @@ var LlmApplicationTransformer;
|
|
|
44
44
|
typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("application")),
|
|
45
45
|
], true));
|
|
46
46
|
};
|
|
47
|
-
/**
|
|
48
|
-
* @internal
|
|
49
|
-
*/
|
|
47
|
+
/** @internal */
|
|
50
48
|
LlmApplicationTransformer.decompose = (method, props) => {
|
|
51
49
|
var _a;
|
|
52
50
|
// GET GENERIC ARGUMENT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LlmApplicationTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/llm/LlmApplicationTransformer.ts"],"names":[],"mappings":";;;;;;AACA,4DAA4B;AAE5B,4EAAyE;AACzE,sEAAmE;AACnE,8EAA2E;AAC3E,wEAAqE;AACrE,0EAAuE;AAIvE,gGAA6F;AAC7F,oFAAiF;AAMjF,6DAA0D;AAE1D,IAAiB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"LlmApplicationTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/llm/LlmApplicationTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,7 @@ var LlmApplicationTransformer;
|
|
|
38
38
|
ts.factory.createReturnStatement(ts.factory.createIdentifier("application")),
|
|
39
39
|
], true));
|
|
40
40
|
};
|
|
41
|
-
/**
|
|
42
|
-
* @internal
|
|
43
|
-
*/
|
|
41
|
+
/** @internal */
|
|
44
42
|
LlmApplicationTransformer.decompose = (method, props) => {
|
|
45
43
|
// GET GENERIC ARGUMENT
|
|
46
44
|
if (!props.expression.typeArguments?.length)
|
package/lib/typings/Equal.d.mts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Compare the equivalence of the two types X and Y.
|
|
3
3
|
*
|
|
4
|
-
* The two types X and Y refer to any type that can be expressed in the
|
|
4
|
+
* The two types X and Y refer to any type that can be expressed in the
|
|
5
|
+
* TypeScript, such as the union type and the object type.
|
|
5
6
|
*
|
|
7
|
+
* @author Kyungsu Kang - https://github.com/kakasoo
|
|
6
8
|
* @template X One of the types to compare
|
|
7
9
|
* @template Y One of the types to compare
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @author Kyungsu Kang - https://github.com/kakasoo
|
|
11
|
+
* ```ts
|
|
12
|
+
* type Answer = Equal<1 | 2, 1 | 2>; // true
|
|
13
|
+
* ```
|
|
14
14
|
*/
|
|
15
15
|
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
package/lib/typings/Equal.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Compare the equivalence of the two types X and Y.
|
|
3
3
|
*
|
|
4
|
-
* The two types X and Y refer to any type that can be expressed in the
|
|
4
|
+
* The two types X and Y refer to any type that can be expressed in the
|
|
5
|
+
* TypeScript, such as the union type and the object type.
|
|
5
6
|
*
|
|
7
|
+
* @author Kyungsu Kang - https://github.com/kakasoo
|
|
6
8
|
* @template X One of the types to compare
|
|
7
9
|
* @template Y One of the types to compare
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @author Kyungsu Kang - https://github.com/kakasoo
|
|
11
|
+
* ```ts
|
|
12
|
+
* type Answer = Equal<1 | 2, 1 | 2>; // true
|
|
13
|
+
* ```
|
|
14
14
|
*/
|
|
15
15
|
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typia",
|
|
3
|
-
"version": "9.7.
|
|
3
|
+
"version": "9.7.2",
|
|
4
4
|
"description": "Superfast runtime validators with only one line",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"chalk": "^4.0.0",
|
|
66
66
|
"eslint-plugin-deprecation": "^3.0.0",
|
|
67
67
|
"prettier": "^3.2.5",
|
|
68
|
+
"prettier-plugin-jsdoc": "^1.3.3",
|
|
68
69
|
"rimraf": "^5.0.5",
|
|
69
70
|
"rollup": "^4.18.0",
|
|
70
71
|
"rollup-plugin-auto-external": "^2.0.0",
|
package/src/AssertionGuard.ts
CHANGED
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type definition for assertion guard functions in `typia`.
|
|
3
3
|
*
|
|
4
|
-
* An assertion guard is a function that asserts an input value's type at
|
|
5
|
-
* and performs a TypeScript type assertion if validation passes. Unlike
|
|
6
|
-
* assertion functions that return the validated value, assertion guards
|
|
7
|
-
* nothing but automatically cast the input parameter to the expected
|
|
4
|
+
* An assertion guard is a function that asserts an input value's type at
|
|
5
|
+
* runtime and performs a TypeScript type assertion if validation passes. Unlike
|
|
6
|
+
* regular assertion functions that return the validated value, assertion guards
|
|
7
|
+
* return nothing but automatically cast the input parameter to the expected
|
|
8
|
+
* type `T`.
|
|
8
9
|
*
|
|
9
|
-
* This type is used by `typia.createAssertGuard<T>()` and
|
|
10
|
-
* to generate reusable assertion guard
|
|
11
|
-
*
|
|
12
|
-
* @template T - The expected type to validate and assert against
|
|
13
|
-
* @param input - The value to validate (type unknown)
|
|
14
|
-
* @throws {TypeGuardError} When the input value doesn't match the expected type T
|
|
15
|
-
* @returns void - Returns nothing, but asserts that input is type T
|
|
10
|
+
* This type is used by `typia.createAssertGuard<T>()` and
|
|
11
|
+
* `typia.createAssertGuardEquals<T>()` to generate reusable assertion guard
|
|
12
|
+
* functions.
|
|
16
13
|
*
|
|
14
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
17
15
|
* @example
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
16
|
+
* ```typescript
|
|
17
|
+
* interface IMember {
|
|
18
|
+
* name: string;
|
|
19
|
+
* age: number;
|
|
20
|
+
* }
|
|
23
21
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
22
|
+
* // Create reusable assertion guard
|
|
23
|
+
* const assertMember: AssertionGuard<IMember> = typia.createAssertGuard<IMember>();
|
|
26
24
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* // Usage - input will be automatically cast to IMember if validation passes
|
|
26
|
+
* const unknownData: unknown = { name: "John", age: 25 };
|
|
29
27
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
28
|
+
* assertMember(unknownData);
|
|
29
|
+
* // After this line, unknownData is automatically treated as IMember type
|
|
30
|
+
* console.log(unknownData.name); // TypeScript knows this is safe
|
|
31
|
+
* ```;
|
|
34
32
|
*
|
|
33
|
+
* @template T - The expected type to validate and assert against
|
|
34
|
+
* @param input - The value to validate (type unknown)
|
|
35
|
+
* @returns Void - Returns nothing, but asserts that input is type T
|
|
36
|
+
* @throws {TypeGuardError} When the input value doesn't match the expected type
|
|
37
|
+
* T
|
|
35
38
|
* @see {@link https://github.com/samchon/typia#assertguard-functions} Typia assertion guards documentation
|
|
36
39
|
* @see {@link TypeGuardError} Error thrown when assertion fails
|
|
37
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
38
40
|
*/
|
|
39
41
|
export type AssertionGuard<T> = (input: unknown) => asserts input is T;
|
package/src/CamelCase.ts
CHANGED
|
@@ -10,8 +10,8 @@ import { ValueOf } from "./typings/ValueOf";
|
|
|
10
10
|
*
|
|
11
11
|
* It also erases every method property like {@link Resolved} type.
|
|
12
12
|
*
|
|
13
|
-
* @template T Target type to be camelized
|
|
14
13
|
* @author Jeongho Nam - https://github.com/samchon
|
|
14
|
+
* @template T Target type to be camelized
|
|
15
15
|
*/
|
|
16
16
|
export type CamelCase<T> =
|
|
17
17
|
Equal<T, CamelizeMain<T>> extends true ? T : CamelizeMain<T>;
|