typia 9.3.1 → 9.5.0-dev.20250710
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 +38 -0
- package/lib/AssertionGuard.d.ts +38 -0
- package/lib/TypeGuardError.d.mts +124 -3
- package/lib/TypeGuardError.d.ts +124 -3
- package/lib/TypeGuardError.js +47 -0
- package/lib/TypeGuardError.js.map +1 -1
- package/lib/TypeGuardError.mjs +96 -0
- package/lib/executable/setup/PluginConfigurator.js +3 -3
- package/lib/executable/setup/PluginConfigurator.mjs +3 -3
- package/lib/executable/typia.d.mts +1 -1
- package/lib/executable/typia.d.ts +1 -1
- package/lib/executable/typia.js +15 -15
- package/lib/executable/typia.mjs +15 -15
- package/lib/programmers/internal/json_schema_title.js +2 -8
- package/lib/programmers/internal/json_schema_title.js.map +1 -1
- package/lib/programmers/internal/json_schema_title.mjs +1 -7
- package/lib/programmers/json/JsonSchemasProgrammer.js +2 -2
- package/lib/programmers/json/JsonSchemasProgrammer.mjs +2 -2
- package/lib/schemas/json/IJsonSchemaCollection.d.mts +161 -3
- package/lib/schemas/json/IJsonSchemaCollection.d.ts +161 -3
- package/lib/schemas/json/IJsonSchemaUnit.d.mts +215 -5
- package/lib/schemas/json/IJsonSchemaUnit.d.ts +215 -5
- package/package.json +3 -3
- package/src/AssertionGuard.ts +39 -1
- package/src/CamelCase.ts +75 -75
- package/src/IRandomGenerator.ts +49 -49
- package/src/IReadableURLSearchParams.ts +9 -9
- package/src/IValidation.ts +1 -1
- package/src/PascalCase.ts +71 -71
- package/src/Primitive.ts +92 -92
- package/src/Resolved.ts +74 -74
- package/src/SnakeCase.ts +126 -126
- package/src/TypeGuardError.ts +179 -37
- package/src/executable/TypiaGenerateWizard.ts +83 -83
- package/src/executable/TypiaPatchWizard.ts +45 -45
- package/src/executable/TypiaSetupWizard.ts +171 -171
- package/src/executable/setup/ArgumentParser.ts +42 -42
- package/src/executable/setup/CommandExecutor.ts +8 -8
- package/src/executable/setup/FileRetriever.ts +19 -19
- package/src/executable/setup/PackageManager.ts +87 -87
- package/src/executable/setup/PluginConfigurator.ts +74 -74
- package/src/executable/typia.ts +55 -55
- package/src/factories/CommentFactory.ts +79 -79
- package/src/factories/ExpressionFactory.ts +219 -219
- package/src/factories/IdentifierFactory.ts +89 -89
- package/src/factories/JsonMetadataFactory.ts +83 -83
- package/src/factories/LiteralFactory.ts +52 -52
- package/src/factories/MetadataCollection.ts +278 -278
- package/src/factories/MetadataCommentTagFactory.ts +648 -648
- package/src/factories/MetadataFactory.ts +404 -404
- package/src/factories/MetadataTypeTagFactory.ts +413 -413
- package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
- package/src/factories/NumericRangeFactory.ts +72 -72
- package/src/factories/ProtobufFactory.ts +875 -875
- package/src/factories/StatementFactory.ts +90 -90
- package/src/factories/TemplateFactory.ts +64 -64
- package/src/factories/TypeFactory.ts +140 -140
- package/src/factories/ValueFactory.ts +12 -12
- package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
- package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
- package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
- package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
- package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
- package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
- package/src/factories/internal/metadata/explore_metadata.ts +31 -31
- package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
- package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
- package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
- package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
- package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
- package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
- package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
- package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
- package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
- package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
- package/src/factories/internal/metadata/iterate_metadata_native.ts +264 -264
- package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
- package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
- package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
- package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
- package/src/functional.ts +740 -740
- package/src/http.ts +1040 -1040
- package/src/index.ts +4 -4
- package/src/internal/_IProtobufWriter.ts +18 -18
- package/src/internal/_ProtobufReader.ts +194 -194
- package/src/internal/_ProtobufSizer.ts +145 -145
- package/src/internal/_ProtobufWriter.ts +145 -145
- package/src/internal/_accessExpressionAsString.ts +46 -46
- package/src/internal/_assertGuard.ts +13 -13
- package/src/internal/_createStandardSchema.ts +134 -134
- package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
- package/src/internal/_httpFormDataReadArray.ts +4 -4
- package/src/internal/_httpFormDataReadBigint.ts +18 -18
- package/src/internal/_httpFormDataReadBlob.ts +10 -10
- package/src/internal/_httpFormDataReadBoolean.ts +16 -16
- package/src/internal/_httpFormDataReadFile.ts +10 -10
- package/src/internal/_httpFormDataReadNumber.ts +15 -15
- package/src/internal/_httpFormDataReadString.ts +10 -10
- package/src/internal/_httpHeaderReadBigint.ts +10 -10
- package/src/internal/_httpHeaderReadBoolean.ts +8 -8
- package/src/internal/_httpHeaderReadNumber.ts +7 -7
- package/src/internal/_httpParameterReadBigint.ts +10 -10
- package/src/internal/_httpParameterReadBoolean.ts +8 -8
- package/src/internal/_httpParameterReadNumber.ts +7 -7
- package/src/internal/_httpParameterReadString.ts +2 -2
- package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
- package/src/internal/_httpQueryReadArray.ts +4 -4
- package/src/internal/_httpQueryReadBigint.ts +12 -12
- package/src/internal/_httpQueryReadBoolean.ts +14 -14
- package/src/internal/_httpQueryReadNumber.ts +9 -9
- package/src/internal/_httpQueryReadString.ts +4 -4
- package/src/internal/_isBetween.ts +2 -2
- package/src/internal/_isBigintString.ts +8 -8
- package/src/internal/_isFormatByte.ts +7 -7
- package/src/internal/_isFormatDate.ts +3 -3
- package/src/internal/_isFormatDateTime.ts +4 -4
- package/src/internal/_isFormatDuration.ts +4 -4
- package/src/internal/_isFormatEmail.ts +4 -4
- package/src/internal/_isFormatHostname.ts +4 -4
- package/src/internal/_isFormatIdnEmail.ts +4 -4
- package/src/internal/_isFormatIdnHostname.ts +4 -4
- package/src/internal/_isFormatIpv4.ts +4 -4
- package/src/internal/_isFormatIpv6.ts +4 -4
- package/src/internal/_isFormatIri.ts +3 -3
- package/src/internal/_isFormatIriReference.ts +4 -4
- package/src/internal/_isFormatJsonPointer.ts +3 -3
- package/src/internal/_isFormatPassword.ts +1 -1
- package/src/internal/_isFormatRegex.ts +8 -8
- package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
- package/src/internal/_isFormatTime.ts +4 -4
- package/src/internal/_isFormatUri.ts +6 -6
- package/src/internal/_isFormatUriReference.ts +5 -5
- package/src/internal/_isFormatUriTemplate.ts +4 -4
- package/src/internal/_isFormatUrl.ts +4 -4
- package/src/internal/_isFormatUuid.ts +3 -3
- package/src/internal/_isTypeFloat.ts +5 -5
- package/src/internal/_isTypeInt32.ts +5 -5
- package/src/internal/_isTypeInt64.ts +5 -5
- package/src/internal/_isTypeUint32.ts +5 -5
- package/src/internal/_isTypeUint64.ts +5 -5
- package/src/internal/_isUniqueItems.ts +159 -159
- package/src/internal/_jsonStringifyNumber.ts +12 -12
- package/src/internal/_jsonStringifyRest.ts +3 -3
- package/src/internal/_jsonStringifyString.ts +42 -42
- package/src/internal/_jsonStringifyTail.ts +2 -2
- package/src/internal/_llmApplicationFinalize.ts +20 -20
- package/src/internal/_miscCloneAny.ts +46 -46
- package/src/internal/_notationAny.ts +37 -37
- package/src/internal/_notationCamel.ts +13 -13
- package/src/internal/_notationPascal.ts +8 -8
- package/src/internal/_notationSnake.ts +43 -43
- package/src/internal/_randomArray.ts +21 -21
- package/src/internal/_randomBigint.ts +6 -6
- package/src/internal/_randomBoolean.ts +1 -1
- package/src/internal/_randomFormatByte.ts +3 -3
- package/src/internal/_randomFormatDate.ts +18 -18
- package/src/internal/_randomFormatDatetime.ts +16 -16
- package/src/internal/_randomFormatDuration.ts +27 -27
- package/src/internal/_randomFormatEmail.ts +11 -11
- package/src/internal/_randomFormatHostname.ts +6 -6
- package/src/internal/_randomFormatIdnEmail.ts +3 -3
- package/src/internal/_randomFormatIdnHostname.ts +3 -3
- package/src/internal/_randomFormatIpv4.ts +11 -11
- package/src/internal/_randomFormatIpv6.ts +11 -11
- package/src/internal/_randomFormatIri.ts +3 -3
- package/src/internal/_randomFormatIriReference.ts +3 -3
- package/src/internal/_randomFormatJsonPointer.ts +7 -7
- package/src/internal/_randomFormatPassword.ts +8 -8
- package/src/internal/_randomFormatRegex.ts +4 -4
- package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
- package/src/internal/_randomFormatTime.ts +14 -14
- package/src/internal/_randomFormatUri.ts +3 -3
- package/src/internal/_randomFormatUriReference.ts +3 -3
- package/src/internal/_randomFormatUriTemplate.ts +3 -3
- package/src/internal/_randomFormatUrl.ts +11 -11
- package/src/internal/_randomFormatUuid.ts +6 -6
- package/src/internal/_randomInteger.ts +53 -53
- package/src/internal/_randomNumber.ts +80 -80
- package/src/internal/_randomPattern.ts +10 -10
- package/src/internal/_randomPick.ts +9 -9
- package/src/internal/_randomString.ts +24 -24
- package/src/internal/_throwTypeGuardError.ts +5 -5
- package/src/internal/_validateReport.ts +13 -13
- package/src/internal/private/__notationCapitalize.ts +2 -2
- package/src/internal/private/__notationUnsnake.ts +24 -24
- package/src/json.ts +696 -696
- package/src/llm.ts +506 -506
- package/src/misc.ts +651 -651
- package/src/module.ts +936 -936
- package/src/notations.ts +820 -820
- package/src/programmers/AssertProgrammer.ts +454 -454
- package/src/programmers/CheckerProgrammer.ts +1617 -1617
- package/src/programmers/FeatureProgrammer.ts +627 -627
- package/src/programmers/ImportProgrammer.ts +185 -185
- package/src/programmers/IsProgrammer.ts +273 -273
- package/src/programmers/RandomProgrammer.ts +1190 -1190
- package/src/programmers/TypiaProgrammer.ts +175 -175
- package/src/programmers/ValidateProgrammer.ts +448 -448
- package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
- package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
- package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
- package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
- package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
- package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
- package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
- package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
- package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
- package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
- package/src/programmers/helpers/AtomicPredicator.ts +35 -35
- package/src/programmers/helpers/CloneJoiner.ts +143 -143
- package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
- package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
- package/src/programmers/helpers/ICheckEntry.ts +13 -13
- package/src/programmers/helpers/IExpressionEntry.ts +12 -12
- package/src/programmers/helpers/NotationJoiner.ts +144 -144
- package/src/programmers/helpers/OptionPredicator.ts +15 -15
- package/src/programmers/helpers/ProtobufUtil.ts +228 -228
- package/src/programmers/helpers/ProtobufWire.ts +34 -34
- package/src/programmers/helpers/PruneJoiner.ts +148 -148
- package/src/programmers/helpers/RandomJoiner.ts +168 -168
- package/src/programmers/helpers/StringifyJoinder.ts +115 -115
- package/src/programmers/helpers/StringifyPredicator.ts +13 -13
- package/src/programmers/helpers/UnionExplorer.ts +372 -372
- package/src/programmers/helpers/UnionPredicator.ts +79 -79
- package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
- package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
- package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
- package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
- package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
- package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
- package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
- package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
- package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
- package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
- package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
- package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
- package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
- package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
- package/src/programmers/internal/check_array_length.ts +47 -47
- package/src/programmers/internal/check_bigint.ts +50 -50
- package/src/programmers/internal/check_dynamic_key.ts +201 -201
- package/src/programmers/internal/check_dynamic_properties.ts +208 -208
- package/src/programmers/internal/check_everything.ts +23 -23
- package/src/programmers/internal/check_native.ts +27 -27
- package/src/programmers/internal/check_number.ts +112 -112
- package/src/programmers/internal/check_object.ts +75 -75
- package/src/programmers/internal/check_string.ts +50 -50
- package/src/programmers/internal/check_template.ts +48 -48
- package/src/programmers/internal/check_union_array_like.ts +335 -335
- package/src/programmers/internal/decode_union_object.ts +116 -116
- package/src/programmers/internal/feature_object_entries.ts +61 -61
- package/src/programmers/internal/json_schema_alias.ts +47 -47
- package/src/programmers/internal/json_schema_array.ts +45 -45
- package/src/programmers/internal/json_schema_bigint.ts +15 -15
- package/src/programmers/internal/json_schema_boolean.ts +15 -15
- package/src/programmers/internal/json_schema_constant.ts +26 -26
- package/src/programmers/internal/json_schema_description.ts +12 -12
- package/src/programmers/internal/json_schema_discriminator.ts +35 -35
- package/src/programmers/internal/json_schema_escaped.ts +82 -82
- package/src/programmers/internal/json_schema_native.ts +33 -33
- package/src/programmers/internal/json_schema_number.ts +15 -15
- package/src/programmers/internal/json_schema_object.ts +158 -158
- package/src/programmers/internal/json_schema_plugin.ts +18 -18
- package/src/programmers/internal/json_schema_station.ts +185 -185
- package/src/programmers/internal/json_schema_string.ts +15 -15
- package/src/programmers/internal/json_schema_template.ts +55 -55
- package/src/programmers/internal/json_schema_title.ts +13 -20
- package/src/programmers/internal/json_schema_tuple.ts +35 -35
- package/src/programmers/internal/metadata_to_pattern.ts +42 -42
- package/src/programmers/internal/postfix_of_tuple.ts +5 -5
- package/src/programmers/internal/prune_object_properties.ts +71 -71
- package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
- package/src/programmers/internal/stringify_native.ts +7 -7
- package/src/programmers/internal/stringify_regular_properties.ts +81 -81
- package/src/programmers/internal/template_to_pattern.ts +23 -23
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
- package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
- package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
- package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
- package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
- package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
- package/src/programmers/json/JsonSchemaProgrammer.ts +26 -26
- package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
- package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
- package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
- package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
- package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
- package/src/programmers/llm/LlmModelPredicator.ts +127 -127
- package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
- package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
- package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
- package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
- package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
- package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
- package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
- package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
- package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
- package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
- package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
- package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
- package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
- package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
- package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
- package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
- package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
- package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
- package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
- package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
- package/src/protobuf.ts +861 -861
- package/src/reflect.ts +50 -50
- package/src/schemas/json/IJsonApplication.ts +77 -77
- package/src/schemas/json/IJsonSchemaCollection.ts +195 -29
- package/src/schemas/json/IJsonSchemaUnit.ts +250 -32
- package/src/schemas/json/__IJsonApplication.ts +63 -63
- package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
- package/src/schemas/metadata/IMetadata.ts +35 -35
- package/src/schemas/metadata/IMetadataAlias.ts +6 -6
- package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
- package/src/schemas/metadata/IMetadataApplication.ts +7 -7
- package/src/schemas/metadata/IMetadataArray.ts +6 -6
- package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
- package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
- package/src/schemas/metadata/IMetadataComponents.ts +11 -11
- package/src/schemas/metadata/IMetadataConstant.ts +18 -18
- package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
- package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
- package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
- package/src/schemas/metadata/IMetadataFunction.ts +8 -8
- package/src/schemas/metadata/IMetadataMap.ts +8 -8
- package/src/schemas/metadata/IMetadataNative.ts +6 -6
- package/src/schemas/metadata/IMetadataObject.ts +6 -6
- package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
- package/src/schemas/metadata/IMetadataParameter.ts +9 -9
- package/src/schemas/metadata/IMetadataProperty.ts +9 -9
- package/src/schemas/metadata/IMetadataSet.ts +7 -7
- package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
- package/src/schemas/metadata/IMetadataTuple.ts +6 -6
- package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
- package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
- package/src/schemas/metadata/Metadata.ts +687 -687
- package/src/schemas/metadata/MetadataAlias.ts +46 -46
- package/src/schemas/metadata/MetadataAliasType.ts +63 -63
- package/src/schemas/metadata/MetadataApplication.ts +44 -44
- package/src/schemas/metadata/MetadataArray.ts +49 -49
- package/src/schemas/metadata/MetadataArrayType.ts +57 -57
- package/src/schemas/metadata/MetadataAtomic.ts +87 -87
- package/src/schemas/metadata/MetadataComponents.ts +98 -98
- package/src/schemas/metadata/MetadataConstant.ts +34 -34
- package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
- package/src/schemas/metadata/MetadataEscaped.ts +51 -51
- package/src/schemas/metadata/MetadataFunction.ts +49 -49
- package/src/schemas/metadata/MetadataMap.ts +48 -48
- package/src/schemas/metadata/MetadataNative.ts +44 -44
- package/src/schemas/metadata/MetadataObject.ts +48 -48
- package/src/schemas/metadata/MetadataObjectType.ts +149 -149
- package/src/schemas/metadata/MetadataParameter.ts +54 -54
- package/src/schemas/metadata/MetadataProperty.ts +59 -59
- package/src/schemas/metadata/MetadataSet.ts +45 -45
- package/src/schemas/metadata/MetadataTemplate.ts +80 -80
- package/src/schemas/metadata/MetadataTuple.ts +32 -32
- package/src/schemas/metadata/MetadataTupleType.ts +67 -67
- package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
- package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
- package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
- package/src/tags/Constant.ts +15 -15
- package/src/tags/ContentMediaType.ts +10 -10
- package/src/tags/Default.ts +22 -22
- package/src/tags/Example.ts +24 -24
- package/src/tags/Examples.ts +16 -16
- package/src/tags/ExclusiveMaximum.ts +23 -23
- package/src/tags/ExclusiveMinimum.ts +23 -23
- package/src/tags/Format.ts +50 -50
- package/src/tags/JsonSchemaPlugin.ts +8 -8
- package/src/tags/MaxItems.ts +12 -12
- package/src/tags/MaxLength.ts +12 -12
- package/src/tags/Maximum.ts +19 -19
- package/src/tags/MinItems.ts +12 -12
- package/src/tags/MinLength.ts +12 -12
- package/src/tags/Minimum.ts +19 -19
- package/src/tags/MultipleOf.ts +21 -21
- package/src/tags/Pattern.ts +31 -31
- package/src/tags/Sequence.ts +10 -10
- package/src/tags/TagBase.ts +82 -82
- package/src/tags/Type.ts +37 -37
- package/src/tags/UniqueItems.ts +14 -14
- package/src/tags/index.ts +21 -21
- package/src/tags/internal/FormatCheatSheet.ts +73 -73
- package/src/transform.ts +35 -35
- package/src/transformers/CallExpressionTransformer.ts +554 -554
- package/src/transformers/FileTransformer.ts +136 -136
- package/src/transformers/IProgrammerProps.ts +11 -11
- package/src/transformers/ITransformOptions.ts +62 -62
- package/src/transformers/ITransformProps.ts +9 -9
- package/src/transformers/ITypiaContext.ts +18 -18
- package/src/transformers/ImportTransformer.ts +81 -81
- package/src/transformers/NoTransformConfigurationError.ts +18 -18
- package/src/transformers/NodeTransformer.ts +17 -17
- package/src/transformers/TransformerError.ts +60 -60
- package/src/transformers/features/AssertTransformer.ts +24 -24
- package/src/transformers/features/CreateAssertTransformer.ts +24 -24
- package/src/transformers/features/CreateIsTransformer.ts +18 -18
- package/src/transformers/features/CreateRandomTransformer.ts +43 -43
- package/src/transformers/features/CreateValidateTransformer.ts +18 -18
- package/src/transformers/features/IsTransformer.ts +18 -18
- package/src/transformers/features/RandomTransformer.ts +41 -41
- package/src/transformers/features/ValidateTransformer.ts +18 -18
- package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
- package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
- package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
- package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
- package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
- package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
- package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
- package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
- package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
- package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
- package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
- package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
- package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
- package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
- package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
- package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -135
- package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
- package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
- package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
- package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +145 -145
- package/src/transformers/features/llm/LlmControllerTransformer.ts +93 -93
- package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
- package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
- package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
- package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
- package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
- package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
- package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
- package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
- package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
- package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
- package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
- package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
- package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
- package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
- package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
- package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
- package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
- package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
- package/src/transformers/internal/GenericTransformer.ts +101 -101
- package/src/typings/Atomic.ts +13 -13
- package/src/typings/ClassProperties.ts +5 -5
- package/src/typings/Customizable.ts +5 -5
- package/src/typings/Equal.ts +18 -18
- package/src/typings/IsTuple.ts +9 -9
- package/src/typings/NativeClass.ts +23 -23
- package/src/typings/OmitNever.ts +3 -3
- package/src/typings/ProtobufAtomic.ts +19 -19
- package/src/typings/SpecialFields.ts +3 -3
- package/src/typings/ValidationPipe.ts +9 -9
- package/src/typings/ValueOf.ts +20 -20
- package/src/typings/Writable.ts +11 -11
- package/src/utils/ArrayUtil.ts +41 -41
- package/src/utils/Escaper.ts +50 -50
- package/src/utils/MapUtil.ts +14 -14
- package/src/utils/NamingConvention.ts +94 -94
- package/src/utils/PatternUtil.ts +29 -29
- package/src/utils/ProtobufNameEncoder.ts +32 -32
- package/src/utils/Singleton.ts +16 -16
- package/src/utils/StringUtil.ts +16 -16
|
@@ -1,23 +1,181 @@
|
|
|
1
1
|
import type { OpenApi, OpenApiV3 } from "@samchon/openapi";
|
|
2
2
|
/**
|
|
3
|
-
* Collection of JSON schemas.
|
|
3
|
+
* Collection of JSON schemas with OpenAPI specification support.
|
|
4
|
+
*
|
|
5
|
+
* `IJsonSchemaCollection` represents a comprehensive collection of JSON schemas
|
|
6
|
+
* that can be generated from TypeScript types using the `typia.json.schemas()` function.
|
|
7
|
+
* This interface supports both OpenAPI v3.0 and v3.1 specifications, with the ability
|
|
8
|
+
* to automatically generate appropriate schema definitions based on the specified version.
|
|
9
|
+
*
|
|
10
|
+
* The collection includes:
|
|
11
|
+
* - Generated JSON schemas array containing schema definitions for the specified types
|
|
12
|
+
* - Reusable components that can be referenced across different schemas
|
|
13
|
+
* - Version-specific formatting that adheres to either OpenAPI v3.0 or v3.1 standards
|
|
14
|
+
*
|
|
15
|
+
* Key differences between versions:
|
|
16
|
+
* - OpenAPI v3.0: Uses {@link OpenApiV3.IJsonSchema} format with limited tuple support
|
|
17
|
+
* - OpenAPI v3.1: Uses {@link OpenApi.IJsonSchema} format with full JSON Schema Draft 2020-12 compatibility
|
|
18
|
+
*
|
|
19
|
+
* @template Version The OpenAPI specification version to target ("3.0" or "3.1").
|
|
20
|
+
* Defaults to "3.1" for enhanced JSON Schema compatibility.
|
|
21
|
+
* @template Types Array of original TypeScript types that were analyzed to generate
|
|
22
|
+
* the JSON schemas. This provides type safety and traceability
|
|
23
|
+
* back to the source TypeScript definitions.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Generate schemas for OpenAPI v3.1 (default)
|
|
28
|
+
* const schemas = typia.json.schemas<[User, Product]>();
|
|
29
|
+
* // Type: IJsonSchemaCollection<"3.1", [User, Product]>
|
|
30
|
+
*
|
|
31
|
+
* // Generate schemas for OpenAPI v3.0 (Swagger compatibility)
|
|
32
|
+
* const swaggerSchemas = typia.json.schemas<[User, Product], "3.0">();
|
|
33
|
+
* // Type: IJsonSchemaCollection<"3.0", [User, Product]>
|
|
34
|
+
* ```
|
|
4
35
|
*
|
|
5
|
-
* @template Version Version of the OpenAPI specification.
|
|
6
|
-
* @template Types Original TypeScript types used in the JSON schemas.
|
|
7
36
|
* @author Jeongho Nam - https://github.com/samchon
|
|
8
37
|
*/
|
|
9
38
|
export type IJsonSchemaCollection<Version extends "3.0" | "3.1" = "3.1", Types = unknown[]> = Version extends "3.0" ? IJsonSchemaCollection.IV3_0<Types> : IJsonSchemaCollection.IV3_1<Types>;
|
|
10
39
|
export declare namespace IJsonSchemaCollection {
|
|
40
|
+
/**
|
|
41
|
+
* JSON Schema collection formatted for OpenAPI v3.0 specification.
|
|
42
|
+
*
|
|
43
|
+
* This interface represents a collection of JSON schemas that comply with
|
|
44
|
+
* OpenAPI v3.0 standards, which are compatible with Swagger tools and
|
|
45
|
+
* legacy OpenAPI implementations. OpenAPI v3.0 has some limitations
|
|
46
|
+
* compared to v3.1, particularly around tuple types and pattern properties.
|
|
47
|
+
*
|
|
48
|
+
* Key characteristics of v3.0:
|
|
49
|
+
* - Cannot express tuple types natively (falls back to array representations)
|
|
50
|
+
* - Cannot express pattern properties in object schemas
|
|
51
|
+
* - Uses nullable property instead of union with null type
|
|
52
|
+
* - Limited JSON Schema Draft compatibility (based on Draft 4)
|
|
53
|
+
*
|
|
54
|
+
* @template Types Array of original TypeScript types used to generate the schemas.
|
|
55
|
+
* This provides compile-time type information about what types
|
|
56
|
+
* were analyzed during schema generation.
|
|
57
|
+
*/
|
|
11
58
|
interface IV3_0<Types = unknown[]> {
|
|
59
|
+
/**
|
|
60
|
+
* OpenAPI specification version identifier.
|
|
61
|
+
*
|
|
62
|
+
* Always set to "3.0" to indicate this collection uses OpenAPI v3.0
|
|
63
|
+
* schema format and constraints.
|
|
64
|
+
*/
|
|
12
65
|
version: "3.0";
|
|
66
|
+
/**
|
|
67
|
+
* Array of generated JSON schemas.
|
|
68
|
+
*
|
|
69
|
+
* Contains the actual JSON schema definitions generated from the input TypeScript types.
|
|
70
|
+
* Each schema in this array corresponds to one of the types specified in the `Types`
|
|
71
|
+
* template parameter. The schemas follow OpenAPI v3.0 format and may contain
|
|
72
|
+
* references to components defined in the {@link components} property.
|
|
73
|
+
*
|
|
74
|
+
* Schema references typically use the format: `{ "$ref": "#/components/schemas/TypeName" }`
|
|
75
|
+
*/
|
|
13
76
|
schemas: OpenApiV3.IJsonSchema[];
|
|
77
|
+
/**
|
|
78
|
+
* Reusable schema components for OpenAPI v3.0.
|
|
79
|
+
*
|
|
80
|
+
* Contains reusable schema definitions, security schemes, and other components
|
|
81
|
+
* that can be referenced from the main schemas. This follows the OpenAPI v3.0
|
|
82
|
+
* components structure and enables schema reuse and modularity.
|
|
83
|
+
*
|
|
84
|
+
* Components include:
|
|
85
|
+
* - schemas: Named type definitions that can be referenced via $ref
|
|
86
|
+
* - securitySchemes: Authentication and authorization schemes
|
|
87
|
+
* - parameters: Reusable parameter definitions
|
|
88
|
+
* - requestBodies: Reusable request body definitions
|
|
89
|
+
* - responses: Reusable response definitions
|
|
90
|
+
* - headers: Reusable header definitions
|
|
91
|
+
* - examples: Reusable example definitions
|
|
92
|
+
*/
|
|
14
93
|
components: OpenApiV3.IComponents;
|
|
94
|
+
/**
|
|
95
|
+
* Type metadata for compile-time type tracking.
|
|
96
|
+
*
|
|
97
|
+
* This optional property stores the original TypeScript types that were
|
|
98
|
+
* used to generate the JSON schemas. It's primarily used for type safety
|
|
99
|
+
* and doesn't affect runtime behavior. The property is marked as optional
|
|
100
|
+
* and undefined to prevent it from appearing in serialized JSON output.
|
|
101
|
+
*
|
|
102
|
+
* This enables:
|
|
103
|
+
* - Compile-time type checking against the original types
|
|
104
|
+
* - IDE intellisense and autocompletion
|
|
105
|
+
* - Type-safe schema validation and usage
|
|
106
|
+
*/
|
|
15
107
|
__types?: Types | undefined;
|
|
16
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* JSON Schema collection formatted for OpenAPI v3.1 specification.
|
|
111
|
+
*
|
|
112
|
+
* This interface represents a collection of JSON schemas that comply with
|
|
113
|
+
* OpenAPI v3.1 standards, which provide enhanced JSON Schema compatibility
|
|
114
|
+
* and support for modern JSON Schema features. OpenAPI v3.1 is based on
|
|
115
|
+
* JSON Schema Draft 2020-12 and offers significant improvements over v3.0.
|
|
116
|
+
*
|
|
117
|
+
* Key advantages of v3.1:
|
|
118
|
+
* - Full tuple type support with prefixItems
|
|
119
|
+
* - Pattern properties support for dynamic object keys
|
|
120
|
+
* - Proper null type handling via union types
|
|
121
|
+
* - Enhanced JSON Schema Draft 2020-12 compatibility
|
|
122
|
+
* - Better const, enum, and validation support
|
|
123
|
+
*
|
|
124
|
+
* @template Types Array of original TypeScript types used to generate the schemas.
|
|
125
|
+
* This provides compile-time type information about what types
|
|
126
|
+
* were analyzed during schema generation.
|
|
127
|
+
*/
|
|
17
128
|
interface IV3_1<Types = unknown[]> {
|
|
129
|
+
/**
|
|
130
|
+
* OpenAPI specification version identifier.
|
|
131
|
+
*
|
|
132
|
+
* Always set to "3.1" to indicate this collection uses OpenAPI v3.1
|
|
133
|
+
* schema format with enhanced JSON Schema compatibility.
|
|
134
|
+
*/
|
|
18
135
|
version: "3.1";
|
|
136
|
+
/**
|
|
137
|
+
* Reusable schema components for OpenAPI v3.1.
|
|
138
|
+
*
|
|
139
|
+
* Contains reusable schema definitions and other components following the
|
|
140
|
+
* OpenAPI v3.1 specification. This structure is similar to v3.0 but supports
|
|
141
|
+
* enhanced JSON Schema features and improved type definitions.
|
|
142
|
+
*
|
|
143
|
+
* Components include:
|
|
144
|
+
* - schemas: Named type definitions with enhanced JSON Schema support
|
|
145
|
+
* - securitySchemes: Authentication and authorization schemes
|
|
146
|
+
*
|
|
147
|
+
* The emended OpenAPI v3.1 format used here removes ambiguous expressions
|
|
148
|
+
* and standardizes certain patterns for better tooling compatibility.
|
|
149
|
+
*/
|
|
19
150
|
components: OpenApi.IComponents;
|
|
151
|
+
/**
|
|
152
|
+
* Array of generated JSON schemas with v3.1 enhancements.
|
|
153
|
+
*
|
|
154
|
+
* Contains JSON schema definitions that take advantage of OpenAPI v3.1's
|
|
155
|
+
* enhanced capabilities. These schemas can express more complex TypeScript
|
|
156
|
+
* types accurately, including:
|
|
157
|
+
* - Tuple types using prefixItems
|
|
158
|
+
* - Union types with proper null handling
|
|
159
|
+
* - Complex nested object structures
|
|
160
|
+
* - Pattern-based property definitions
|
|
161
|
+
*
|
|
162
|
+
* Each schema corresponds to one of the input TypeScript types and may
|
|
163
|
+
* reference components defined in the {@link components} property.
|
|
164
|
+
*/
|
|
20
165
|
schemas: OpenApi.IJsonSchema[];
|
|
166
|
+
/**
|
|
167
|
+
* Type metadata for compile-time type tracking.
|
|
168
|
+
*
|
|
169
|
+
* This optional property stores the original TypeScript types that were
|
|
170
|
+
* used to generate the JSON schemas. It provides compile-time type safety
|
|
171
|
+
* and enables better development experience without affecting runtime behavior.
|
|
172
|
+
*
|
|
173
|
+
* Benefits include:
|
|
174
|
+
* - Strong typing connection to original TypeScript definitions
|
|
175
|
+
* - Enhanced IDE support and autocompletion
|
|
176
|
+
* - Compile-time validation of schema usage
|
|
177
|
+
* - Type-safe integration with validation libraries
|
|
178
|
+
*/
|
|
21
179
|
__types?: Types | undefined;
|
|
22
180
|
}
|
|
23
181
|
}
|
|
@@ -1,23 +1,181 @@
|
|
|
1
1
|
import type { OpenApi, OpenApiV3 } from "@samchon/openapi";
|
|
2
2
|
/**
|
|
3
|
-
* Collection of JSON schemas.
|
|
3
|
+
* Collection of JSON schemas with OpenAPI specification support.
|
|
4
|
+
*
|
|
5
|
+
* `IJsonSchemaCollection` represents a comprehensive collection of JSON schemas
|
|
6
|
+
* that can be generated from TypeScript types using the `typia.json.schemas()` function.
|
|
7
|
+
* This interface supports both OpenAPI v3.0 and v3.1 specifications, with the ability
|
|
8
|
+
* to automatically generate appropriate schema definitions based on the specified version.
|
|
9
|
+
*
|
|
10
|
+
* The collection includes:
|
|
11
|
+
* - Generated JSON schemas array containing schema definitions for the specified types
|
|
12
|
+
* - Reusable components that can be referenced across different schemas
|
|
13
|
+
* - Version-specific formatting that adheres to either OpenAPI v3.0 or v3.1 standards
|
|
14
|
+
*
|
|
15
|
+
* Key differences between versions:
|
|
16
|
+
* - OpenAPI v3.0: Uses {@link OpenApiV3.IJsonSchema} format with limited tuple support
|
|
17
|
+
* - OpenAPI v3.1: Uses {@link OpenApi.IJsonSchema} format with full JSON Schema Draft 2020-12 compatibility
|
|
18
|
+
*
|
|
19
|
+
* @template Version The OpenAPI specification version to target ("3.0" or "3.1").
|
|
20
|
+
* Defaults to "3.1" for enhanced JSON Schema compatibility.
|
|
21
|
+
* @template Types Array of original TypeScript types that were analyzed to generate
|
|
22
|
+
* the JSON schemas. This provides type safety and traceability
|
|
23
|
+
* back to the source TypeScript definitions.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Generate schemas for OpenAPI v3.1 (default)
|
|
28
|
+
* const schemas = typia.json.schemas<[User, Product]>();
|
|
29
|
+
* // Type: IJsonSchemaCollection<"3.1", [User, Product]>
|
|
30
|
+
*
|
|
31
|
+
* // Generate schemas for OpenAPI v3.0 (Swagger compatibility)
|
|
32
|
+
* const swaggerSchemas = typia.json.schemas<[User, Product], "3.0">();
|
|
33
|
+
* // Type: IJsonSchemaCollection<"3.0", [User, Product]>
|
|
34
|
+
* ```
|
|
4
35
|
*
|
|
5
|
-
* @template Version Version of the OpenAPI specification.
|
|
6
|
-
* @template Types Original TypeScript types used in the JSON schemas.
|
|
7
36
|
* @author Jeongho Nam - https://github.com/samchon
|
|
8
37
|
*/
|
|
9
38
|
export type IJsonSchemaCollection<Version extends "3.0" | "3.1" = "3.1", Types = unknown[]> = Version extends "3.0" ? IJsonSchemaCollection.IV3_0<Types> : IJsonSchemaCollection.IV3_1<Types>;
|
|
10
39
|
export declare namespace IJsonSchemaCollection {
|
|
40
|
+
/**
|
|
41
|
+
* JSON Schema collection formatted for OpenAPI v3.0 specification.
|
|
42
|
+
*
|
|
43
|
+
* This interface represents a collection of JSON schemas that comply with
|
|
44
|
+
* OpenAPI v3.0 standards, which are compatible with Swagger tools and
|
|
45
|
+
* legacy OpenAPI implementations. OpenAPI v3.0 has some limitations
|
|
46
|
+
* compared to v3.1, particularly around tuple types and pattern properties.
|
|
47
|
+
*
|
|
48
|
+
* Key characteristics of v3.0:
|
|
49
|
+
* - Cannot express tuple types natively (falls back to array representations)
|
|
50
|
+
* - Cannot express pattern properties in object schemas
|
|
51
|
+
* - Uses nullable property instead of union with null type
|
|
52
|
+
* - Limited JSON Schema Draft compatibility (based on Draft 4)
|
|
53
|
+
*
|
|
54
|
+
* @template Types Array of original TypeScript types used to generate the schemas.
|
|
55
|
+
* This provides compile-time type information about what types
|
|
56
|
+
* were analyzed during schema generation.
|
|
57
|
+
*/
|
|
11
58
|
interface IV3_0<Types = unknown[]> {
|
|
59
|
+
/**
|
|
60
|
+
* OpenAPI specification version identifier.
|
|
61
|
+
*
|
|
62
|
+
* Always set to "3.0" to indicate this collection uses OpenAPI v3.0
|
|
63
|
+
* schema format and constraints.
|
|
64
|
+
*/
|
|
12
65
|
version: "3.0";
|
|
66
|
+
/**
|
|
67
|
+
* Array of generated JSON schemas.
|
|
68
|
+
*
|
|
69
|
+
* Contains the actual JSON schema definitions generated from the input TypeScript types.
|
|
70
|
+
* Each schema in this array corresponds to one of the types specified in the `Types`
|
|
71
|
+
* template parameter. The schemas follow OpenAPI v3.0 format and may contain
|
|
72
|
+
* references to components defined in the {@link components} property.
|
|
73
|
+
*
|
|
74
|
+
* Schema references typically use the format: `{ "$ref": "#/components/schemas/TypeName" }`
|
|
75
|
+
*/
|
|
13
76
|
schemas: OpenApiV3.IJsonSchema[];
|
|
77
|
+
/**
|
|
78
|
+
* Reusable schema components for OpenAPI v3.0.
|
|
79
|
+
*
|
|
80
|
+
* Contains reusable schema definitions, security schemes, and other components
|
|
81
|
+
* that can be referenced from the main schemas. This follows the OpenAPI v3.0
|
|
82
|
+
* components structure and enables schema reuse and modularity.
|
|
83
|
+
*
|
|
84
|
+
* Components include:
|
|
85
|
+
* - schemas: Named type definitions that can be referenced via $ref
|
|
86
|
+
* - securitySchemes: Authentication and authorization schemes
|
|
87
|
+
* - parameters: Reusable parameter definitions
|
|
88
|
+
* - requestBodies: Reusable request body definitions
|
|
89
|
+
* - responses: Reusable response definitions
|
|
90
|
+
* - headers: Reusable header definitions
|
|
91
|
+
* - examples: Reusable example definitions
|
|
92
|
+
*/
|
|
14
93
|
components: OpenApiV3.IComponents;
|
|
94
|
+
/**
|
|
95
|
+
* Type metadata for compile-time type tracking.
|
|
96
|
+
*
|
|
97
|
+
* This optional property stores the original TypeScript types that were
|
|
98
|
+
* used to generate the JSON schemas. It's primarily used for type safety
|
|
99
|
+
* and doesn't affect runtime behavior. The property is marked as optional
|
|
100
|
+
* and undefined to prevent it from appearing in serialized JSON output.
|
|
101
|
+
*
|
|
102
|
+
* This enables:
|
|
103
|
+
* - Compile-time type checking against the original types
|
|
104
|
+
* - IDE intellisense and autocompletion
|
|
105
|
+
* - Type-safe schema validation and usage
|
|
106
|
+
*/
|
|
15
107
|
__types?: Types | undefined;
|
|
16
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* JSON Schema collection formatted for OpenAPI v3.1 specification.
|
|
111
|
+
*
|
|
112
|
+
* This interface represents a collection of JSON schemas that comply with
|
|
113
|
+
* OpenAPI v3.1 standards, which provide enhanced JSON Schema compatibility
|
|
114
|
+
* and support for modern JSON Schema features. OpenAPI v3.1 is based on
|
|
115
|
+
* JSON Schema Draft 2020-12 and offers significant improvements over v3.0.
|
|
116
|
+
*
|
|
117
|
+
* Key advantages of v3.1:
|
|
118
|
+
* - Full tuple type support with prefixItems
|
|
119
|
+
* - Pattern properties support for dynamic object keys
|
|
120
|
+
* - Proper null type handling via union types
|
|
121
|
+
* - Enhanced JSON Schema Draft 2020-12 compatibility
|
|
122
|
+
* - Better const, enum, and validation support
|
|
123
|
+
*
|
|
124
|
+
* @template Types Array of original TypeScript types used to generate the schemas.
|
|
125
|
+
* This provides compile-time type information about what types
|
|
126
|
+
* were analyzed during schema generation.
|
|
127
|
+
*/
|
|
17
128
|
interface IV3_1<Types = unknown[]> {
|
|
129
|
+
/**
|
|
130
|
+
* OpenAPI specification version identifier.
|
|
131
|
+
*
|
|
132
|
+
* Always set to "3.1" to indicate this collection uses OpenAPI v3.1
|
|
133
|
+
* schema format with enhanced JSON Schema compatibility.
|
|
134
|
+
*/
|
|
18
135
|
version: "3.1";
|
|
136
|
+
/**
|
|
137
|
+
* Reusable schema components for OpenAPI v3.1.
|
|
138
|
+
*
|
|
139
|
+
* Contains reusable schema definitions and other components following the
|
|
140
|
+
* OpenAPI v3.1 specification. This structure is similar to v3.0 but supports
|
|
141
|
+
* enhanced JSON Schema features and improved type definitions.
|
|
142
|
+
*
|
|
143
|
+
* Components include:
|
|
144
|
+
* - schemas: Named type definitions with enhanced JSON Schema support
|
|
145
|
+
* - securitySchemes: Authentication and authorization schemes
|
|
146
|
+
*
|
|
147
|
+
* The emended OpenAPI v3.1 format used here removes ambiguous expressions
|
|
148
|
+
* and standardizes certain patterns for better tooling compatibility.
|
|
149
|
+
*/
|
|
19
150
|
components: OpenApi.IComponents;
|
|
151
|
+
/**
|
|
152
|
+
* Array of generated JSON schemas with v3.1 enhancements.
|
|
153
|
+
*
|
|
154
|
+
* Contains JSON schema definitions that take advantage of OpenAPI v3.1's
|
|
155
|
+
* enhanced capabilities. These schemas can express more complex TypeScript
|
|
156
|
+
* types accurately, including:
|
|
157
|
+
* - Tuple types using prefixItems
|
|
158
|
+
* - Union types with proper null handling
|
|
159
|
+
* - Complex nested object structures
|
|
160
|
+
* - Pattern-based property definitions
|
|
161
|
+
*
|
|
162
|
+
* Each schema corresponds to one of the input TypeScript types and may
|
|
163
|
+
* reference components defined in the {@link components} property.
|
|
164
|
+
*/
|
|
20
165
|
schemas: OpenApi.IJsonSchema[];
|
|
166
|
+
/**
|
|
167
|
+
* Type metadata for compile-time type tracking.
|
|
168
|
+
*
|
|
169
|
+
* This optional property stores the original TypeScript types that were
|
|
170
|
+
* used to generate the JSON schemas. It provides compile-time type safety
|
|
171
|
+
* and enables better development experience without affecting runtime behavior.
|
|
172
|
+
*
|
|
173
|
+
* Benefits include:
|
|
174
|
+
* - Strong typing connection to original TypeScript definitions
|
|
175
|
+
* - Enhanced IDE support and autocompletion
|
|
176
|
+
* - Compile-time validation of schema usage
|
|
177
|
+
* - Type-safe integration with validation libraries
|
|
178
|
+
*/
|
|
21
179
|
__types?: Types | undefined;
|
|
22
180
|
}
|
|
23
181
|
}
|
|
@@ -1,26 +1,236 @@
|
|
|
1
1
|
import { OpenApi, OpenApiV3 } from "@samchon/openapi";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Single unit of JSON schema representation.
|
|
4
4
|
*
|
|
5
|
-
* `IJsonSchemaUnit`
|
|
6
|
-
*
|
|
5
|
+
* `IJsonSchemaUnit` represents a self-contained JSON schema unit that encapsulates
|
|
6
|
+
* a single schema definition along with its associated reusable components. This is
|
|
7
|
+
* typically used when generating a JSON schema for a single TypeScript type, as
|
|
8
|
+
* opposed to a collection of multiple types.
|
|
7
9
|
*
|
|
8
|
-
* @
|
|
9
|
-
*
|
|
10
|
+
* Unlike {@link IJsonSchemaCollection} which handles multiple schemas, `IJsonSchemaUnit`
|
|
11
|
+
* focuses on representing a single schema with its dependencies. This makes it ideal
|
|
12
|
+
* for scenarios where you need to work with individual type definitions or when
|
|
13
|
+
* integrating with systems that expect single schema documents.
|
|
14
|
+
*
|
|
15
|
+
* The unit contains:
|
|
16
|
+
* - A single JSON schema definition for the specified TypeScript type
|
|
17
|
+
* - All necessary reusable components that the schema may reference
|
|
18
|
+
* - Version-specific formatting for either OpenAPI v3.0 or v3.1 compatibility
|
|
19
|
+
* - Optional type metadata for compile-time type safety
|
|
20
|
+
*
|
|
21
|
+
* Key differences from collection:
|
|
22
|
+
* - Contains only one schema instead of an array of schemas
|
|
23
|
+
* - More lightweight for single-type use cases
|
|
24
|
+
* - Simpler structure for direct schema consumption
|
|
25
|
+
* - Still maintains full component reference support
|
|
26
|
+
*
|
|
27
|
+
* @template Version The OpenAPI specification version to target ("3.0" or "3.1").
|
|
28
|
+
* Defaults to "3.1" for enhanced JSON Schema Draft 2020-12 compatibility.
|
|
29
|
+
* This determines the schema format, validation capabilities, and
|
|
30
|
+
* available features like tuple support and null type handling.
|
|
31
|
+
* @template Type The original TypeScript type that was analyzed to generate this
|
|
32
|
+
* JSON schema unit. This provides compile-time type safety and
|
|
33
|
+
* enables IDEs to provide better intellisense and validation.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* interface User {
|
|
38
|
+
* id: string;
|
|
39
|
+
* name: string;
|
|
40
|
+
* email?: string;
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* // Generate a single schema unit for OpenAPI v3.1 (default)
|
|
44
|
+
* const userSchema = typia.json.schema<User>();
|
|
45
|
+
* // Type: IJsonSchemaUnit<"3.1", User>
|
|
46
|
+
*
|
|
47
|
+
* // Generate a single schema unit for OpenAPI v3.0 (Swagger compatibility)
|
|
48
|
+
* const swaggerUserSchema = typia.json.schema<User, "3.0">();
|
|
49
|
+
* // Type: IJsonSchemaUnit<"3.0", User>
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @see {@link IJsonSchemaCollection} For handling multiple schemas at once
|
|
10
53
|
* @author Jeongho Nam - https://github.com/samchon
|
|
11
54
|
*/
|
|
12
55
|
export type IJsonSchemaUnit<Version extends "3.0" | "3.1" = "3.1", Type = unknown> = Version extends "3.0" ? IJsonSchemaUnit.IV3_0<Type> : IJsonSchemaUnit.IV3_1<Type>;
|
|
13
56
|
export declare namespace IJsonSchemaUnit {
|
|
57
|
+
/**
|
|
58
|
+
* JSON Schema unit formatted for OpenAPI v3.0 specification.
|
|
59
|
+
*
|
|
60
|
+
* This interface represents a single JSON schema unit that complies with
|
|
61
|
+
* OpenAPI v3.0 standards. It contains one schema definition along with
|
|
62
|
+
* any reusable components that the schema references, formatted according
|
|
63
|
+
* to OpenAPI v3.0 constraints and limitations.
|
|
64
|
+
*
|
|
65
|
+
* OpenAPI v3.0 characteristics affecting this unit:
|
|
66
|
+
* - Schema follows OpenAPI v3.0 JSON Schema subset
|
|
67
|
+
* - Limited support for advanced JSON Schema features
|
|
68
|
+
* - Uses nullable property for optional null values
|
|
69
|
+
* - Cannot natively express tuple types or pattern properties
|
|
70
|
+
* - Based on JSON Schema Draft 4 with OpenAPI-specific extensions
|
|
71
|
+
*
|
|
72
|
+
* Use cases for v3.0:
|
|
73
|
+
* - Integration with legacy Swagger tooling
|
|
74
|
+
* - Compatibility with older OpenAPI implementations
|
|
75
|
+
* - Systems that specifically require OpenAPI v3.0 format
|
|
76
|
+
* - Code generation tools that expect v3.0 schemas
|
|
77
|
+
*
|
|
78
|
+
* @template Type The original TypeScript type represented by this schema unit.
|
|
79
|
+
* Provides compile-time type information and enables type-safe
|
|
80
|
+
* operations on the schema.
|
|
81
|
+
*/
|
|
14
82
|
interface IV3_0<Type> {
|
|
83
|
+
/**
|
|
84
|
+
* OpenAPI specification version identifier.
|
|
85
|
+
*
|
|
86
|
+
* Always set to "3.0" to indicate this schema unit uses OpenAPI v3.0
|
|
87
|
+
* format and adheres to its specific constraints and limitations.
|
|
88
|
+
*/
|
|
15
89
|
version: "3.0";
|
|
90
|
+
/**
|
|
91
|
+
* The primary JSON schema definition.
|
|
92
|
+
*
|
|
93
|
+
* Contains the main JSON schema that represents the TypeScript type specified
|
|
94
|
+
* in the `Type` template parameter. This schema follows OpenAPI v3.0 format
|
|
95
|
+
* and may contain references to reusable components defined in the
|
|
96
|
+
* {@link components} property.
|
|
97
|
+
*
|
|
98
|
+
* The schema structure includes:
|
|
99
|
+
* - Type definitions following OpenAPI v3.0 constraints
|
|
100
|
+
* - Property definitions with v3.0-compatible validation rules
|
|
101
|
+
* - References to shared components using $ref syntax
|
|
102
|
+
* - Nullable properties for optional fields that can be null
|
|
103
|
+
*
|
|
104
|
+
* Example schema reference: `{ "$ref": "#/components/schemas/NestedType" }`
|
|
105
|
+
*/
|
|
16
106
|
schema: OpenApiV3.IJsonSchema;
|
|
107
|
+
/**
|
|
108
|
+
* Reusable schema components for OpenAPI v3.0.
|
|
109
|
+
*
|
|
110
|
+
* Contains all reusable schema definitions and components that may be
|
|
111
|
+
* referenced by the main schema. This enables schema modularity and
|
|
112
|
+
* prevents duplication when the same types are used in multiple places
|
|
113
|
+
* within the schema definition.
|
|
114
|
+
*
|
|
115
|
+
* Component categories include:
|
|
116
|
+
* - schemas: Named type definitions for complex objects, arrays, and unions
|
|
117
|
+
* - securitySchemes: Authentication and authorization definitions
|
|
118
|
+
* - parameters: Reusable parameter specifications
|
|
119
|
+
* - requestBodies: Reusable request body definitions
|
|
120
|
+
* - responses: Reusable response specifications
|
|
121
|
+
* - headers: Reusable header definitions
|
|
122
|
+
* - examples: Reusable example values
|
|
123
|
+
*
|
|
124
|
+
* All components follow OpenAPI v3.0 format restrictions and capabilities.
|
|
125
|
+
*/
|
|
17
126
|
components: OpenApiV3.IComponents;
|
|
127
|
+
/**
|
|
128
|
+
* Type metadata for compile-time type safety.
|
|
129
|
+
*
|
|
130
|
+
* This optional property maintains a reference to the original TypeScript
|
|
131
|
+
* type that was used to generate this schema unit. It provides compile-time
|
|
132
|
+
* type information without affecting the runtime JSON representation.
|
|
133
|
+
*
|
|
134
|
+
* Benefits of type metadata:
|
|
135
|
+
* - Enables type-safe schema validation and usage
|
|
136
|
+
* - Provides IDE intellisense and autocompletion
|
|
137
|
+
* - Allows compile-time checking of schema operations
|
|
138
|
+
* - Maintains traceability to original TypeScript definitions
|
|
139
|
+
*
|
|
140
|
+
* The property is intentionally marked as optional and undefined to ensure
|
|
141
|
+
* it doesn't appear in serialized JSON output while preserving type information
|
|
142
|
+
* at compile time.
|
|
143
|
+
*/
|
|
18
144
|
__type?: Type | undefined;
|
|
19
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* JSON Schema unit formatted for OpenAPI v3.1 specification.
|
|
148
|
+
*
|
|
149
|
+
* This interface represents a single JSON schema unit that takes advantage
|
|
150
|
+
* of OpenAPI v3.1's enhanced capabilities and improved JSON Schema compatibility.
|
|
151
|
+
* It provides a more feature-rich and accurate representation of TypeScript
|
|
152
|
+
* types compared to the v3.0 format.
|
|
153
|
+
*
|
|
154
|
+
* OpenAPI v3.1 advantages for this unit:
|
|
155
|
+
* - Full JSON Schema Draft 2020-12 compatibility
|
|
156
|
+
* - Native tuple type support using prefixItems
|
|
157
|
+
* - Proper null type handling via union types
|
|
158
|
+
* - Pattern properties for dynamic object keys
|
|
159
|
+
* - Enhanced const, enum, and validation capabilities
|
|
160
|
+
* - Better support for complex nested structures
|
|
161
|
+
*
|
|
162
|
+
* Use cases for v3.1:
|
|
163
|
+
* - Modern OpenAPI implementations and tooling
|
|
164
|
+
* - Systems requiring accurate TypeScript type representation
|
|
165
|
+
* - Applications needing advanced JSON Schema features
|
|
166
|
+
* - New projects without legacy compatibility requirements
|
|
167
|
+
*
|
|
168
|
+
* @template Type The original TypeScript type represented by this schema unit.
|
|
169
|
+
* Enables compile-time type safety and provides enhanced
|
|
170
|
+
* development experience with better IDE support.
|
|
171
|
+
*/
|
|
20
172
|
interface IV3_1<Type> {
|
|
173
|
+
/**
|
|
174
|
+
* OpenAPI specification version identifier.
|
|
175
|
+
*
|
|
176
|
+
* Always set to "3.1" to indicate this schema unit uses OpenAPI v3.1
|
|
177
|
+
* format with enhanced JSON Schema compatibility and modern features.
|
|
178
|
+
*/
|
|
21
179
|
version: "3.1";
|
|
180
|
+
/**
|
|
181
|
+
* The primary JSON schema definition with v3.1 enhancements.
|
|
182
|
+
*
|
|
183
|
+
* Contains the main JSON schema that accurately represents the TypeScript
|
|
184
|
+
* type using OpenAPI v3.1's enhanced capabilities. This schema can express
|
|
185
|
+
* complex TypeScript constructs that were not possible or accurate in v3.0.
|
|
186
|
+
*
|
|
187
|
+
* Enhanced schema features include:
|
|
188
|
+
* - Tuple types using prefixItems for exact array structure
|
|
189
|
+
* - Union types with proper null handling via oneOf
|
|
190
|
+
* - Const values for literal types
|
|
191
|
+
* - Pattern properties for Record<string, T> types
|
|
192
|
+
* - Advanced validation constraints and metadata
|
|
193
|
+
* - Recursive type definitions with proper $ref handling
|
|
194
|
+
*
|
|
195
|
+
* The schema follows the emended OpenAPI v3.1 format used by typia,
|
|
196
|
+
* which removes ambiguous expressions while maintaining full compatibility.
|
|
197
|
+
*/
|
|
22
198
|
schema: OpenApi.IJsonSchema;
|
|
199
|
+
/**
|
|
200
|
+
* Reusable schema components for OpenAPI v3.1.
|
|
201
|
+
*
|
|
202
|
+
* Contains reusable schema definitions and components that leverage
|
|
203
|
+
* OpenAPI v3.1's enhanced capabilities. These components provide better
|
|
204
|
+
* type representation and more accurate schema definitions compared to v3.0.
|
|
205
|
+
*
|
|
206
|
+
* Enhanced component features:
|
|
207
|
+
* - schemas: More accurate type definitions with v3.1 JSON Schema features
|
|
208
|
+
* - securitySchemes: Enhanced authentication scheme definitions
|
|
209
|
+
* - Better support for complex nested references
|
|
210
|
+
* - Improved handling of recursive and circular type dependencies
|
|
211
|
+
*
|
|
212
|
+
* The components structure follows the emended OpenAPI v3.1 specification
|
|
213
|
+
* that simplifies certain patterns while maintaining full expressiveness.
|
|
214
|
+
*/
|
|
23
215
|
components: OpenApi.IComponents;
|
|
216
|
+
/**
|
|
217
|
+
* Type metadata for enhanced compile-time type safety.
|
|
218
|
+
*
|
|
219
|
+
* This optional property preserves the original TypeScript type information
|
|
220
|
+
* for compile-time type checking and enhanced development experience. It
|
|
221
|
+
* enables type-safe operations and better IDE support without affecting
|
|
222
|
+
* the runtime JSON schema representation.
|
|
223
|
+
*
|
|
224
|
+
* Enhanced type safety features:
|
|
225
|
+
* - Strong typing connection to original TypeScript definitions
|
|
226
|
+
* - Better IDE intellisense and error detection
|
|
227
|
+
* - Compile-time validation of schema usage patterns
|
|
228
|
+
* - Type-safe integration with validation and serialization libraries
|
|
229
|
+
* - Enhanced debugging and development experience
|
|
230
|
+
*
|
|
231
|
+
* The property remains optional and undefined to maintain clean JSON
|
|
232
|
+
* serialization while preserving valuable compile-time information.
|
|
233
|
+
*/
|
|
24
234
|
__type?: Type | undefined;
|
|
25
235
|
}
|
|
26
236
|
}
|