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
package/src/SnakeCase.ts
CHANGED
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
import { Equal } from "./typings/Equal";
|
|
2
|
-
import { NativeClass } from "./typings/NativeClass";
|
|
3
|
-
import { ValueOf } from "./typings/ValueOf";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Snake case type.
|
|
7
|
-
*
|
|
8
|
-
* `SnakeCase` type is a type that all keys of an object are converted to snake case.
|
|
9
|
-
*
|
|
10
|
-
* It also erase every method properties like {@link Resolved} type.
|
|
11
|
-
*
|
|
12
|
-
* @template T Target type to be snake cased
|
|
13
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
14
|
-
*/
|
|
15
|
-
export type SnakeCase<T> =
|
|
16
|
-
Equal<T, SnakageMain<T>> extends true ? T : SnakageMain<T>;
|
|
17
|
-
|
|
18
|
-
/* -----------------------------------------------------------
|
|
19
|
-
OBJECT CONVERSION
|
|
20
|
-
----------------------------------------------------------- */
|
|
21
|
-
|
|
22
|
-
type SnakageMain<T> = T extends [never]
|
|
23
|
-
? never // special trick for (jsonable | null) type
|
|
24
|
-
: T extends { valueOf(): boolean | bigint | number | string }
|
|
25
|
-
? ValueOf<T>
|
|
26
|
-
: T extends Function
|
|
27
|
-
? never
|
|
28
|
-
: T extends object
|
|
29
|
-
? SnakageObject<T>
|
|
30
|
-
: T;
|
|
31
|
-
|
|
32
|
-
type SnakageObject<T extends object> =
|
|
33
|
-
T extends Array<infer U>
|
|
34
|
-
? IsTuple<T> extends true
|
|
35
|
-
? SnakageTuple<T>
|
|
36
|
-
: SnakageMain<U>[]
|
|
37
|
-
: T extends Set<infer U>
|
|
38
|
-
? Set<SnakageMain<U>>
|
|
39
|
-
: T extends Map<infer K, infer V>
|
|
40
|
-
? Map<SnakageMain<K>, SnakageMain<V>>
|
|
41
|
-
: T extends WeakSet<any> | WeakMap<any, any>
|
|
42
|
-
? never
|
|
43
|
-
: T extends NativeClass
|
|
44
|
-
? T
|
|
45
|
-
: {
|
|
46
|
-
[Key in keyof T as SnakageString<Key & string>]: SnakageMain<
|
|
47
|
-
T[Key]
|
|
48
|
-
>;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/* -----------------------------------------------------------
|
|
52
|
-
SPECIAL CASES
|
|
53
|
-
----------------------------------------------------------- */
|
|
54
|
-
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
55
|
-
never,
|
|
56
|
-
]
|
|
57
|
-
? false
|
|
58
|
-
: T extends readonly any[]
|
|
59
|
-
? number extends T["length"]
|
|
60
|
-
? false
|
|
61
|
-
: true
|
|
62
|
-
: false;
|
|
63
|
-
type SnakageTuple<T extends readonly any[]> = T extends []
|
|
64
|
-
? []
|
|
65
|
-
: T extends [infer F]
|
|
66
|
-
? [SnakageMain<F>]
|
|
67
|
-
: T extends [infer F, ...infer Rest extends readonly any[]]
|
|
68
|
-
? [SnakageMain<F>, ...SnakageTuple<Rest>]
|
|
69
|
-
: T extends [(infer F)?]
|
|
70
|
-
? [SnakageMain<F>?]
|
|
71
|
-
: T extends [(infer F)?, ...infer Rest extends readonly any[]]
|
|
72
|
-
? [SnakageMain<F>?, ...SnakageTuple<Rest>]
|
|
73
|
-
: [];
|
|
74
|
-
|
|
75
|
-
/* -----------------------------------------------------------
|
|
76
|
-
STRING CONVERTER
|
|
77
|
-
----------------------------------------------------------- */
|
|
78
|
-
type SnakageString<Key extends string> = Key extends `${infer _}`
|
|
79
|
-
? SnakageStringRepeatedly<Key, "">
|
|
80
|
-
: Key;
|
|
81
|
-
type SnakageStringRepeatedly<
|
|
82
|
-
S extends string,
|
|
83
|
-
Previous extends string,
|
|
84
|
-
> = S extends `${infer First}${infer Second}${infer Rest}`
|
|
85
|
-
? `${Underscore<Previous, First>}${Lowercase<First>}${Underscore<
|
|
86
|
-
First,
|
|
87
|
-
Second
|
|
88
|
-
>}${Lowercase<Second>}${SnakageStringRepeatedly<Rest, Second>}`
|
|
89
|
-
: S extends `${infer First}`
|
|
90
|
-
? `${Underscore<Previous, First>}${Lowercase<First>}`
|
|
91
|
-
: "";
|
|
92
|
-
type Underscore<First extends string, Second extends string> = First extends
|
|
93
|
-
| UpperAlphabetic
|
|
94
|
-
| ""
|
|
95
|
-
| "_"
|
|
96
|
-
? ""
|
|
97
|
-
: Second extends UpperAlphabetic
|
|
98
|
-
? "_"
|
|
99
|
-
: "";
|
|
100
|
-
type UpperAlphabetic =
|
|
101
|
-
| "A"
|
|
102
|
-
| "B"
|
|
103
|
-
| "C"
|
|
104
|
-
| "D"
|
|
105
|
-
| "E"
|
|
106
|
-
| "F"
|
|
107
|
-
| "G"
|
|
108
|
-
| "H"
|
|
109
|
-
| "I"
|
|
110
|
-
| "J"
|
|
111
|
-
| "K"
|
|
112
|
-
| "L"
|
|
113
|
-
| "M"
|
|
114
|
-
| "N"
|
|
115
|
-
| "O"
|
|
116
|
-
| "P"
|
|
117
|
-
| "Q"
|
|
118
|
-
| "R"
|
|
119
|
-
| "S"
|
|
120
|
-
| "T"
|
|
121
|
-
| "U"
|
|
122
|
-
| "V"
|
|
123
|
-
| "W"
|
|
124
|
-
| "X"
|
|
125
|
-
| "Y"
|
|
126
|
-
| "Z";
|
|
1
|
+
import { Equal } from "./typings/Equal";
|
|
2
|
+
import { NativeClass } from "./typings/NativeClass";
|
|
3
|
+
import { ValueOf } from "./typings/ValueOf";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Snake case type.
|
|
7
|
+
*
|
|
8
|
+
* `SnakeCase` type is a type that all keys of an object are converted to snake case.
|
|
9
|
+
*
|
|
10
|
+
* It also erase every method properties like {@link Resolved} type.
|
|
11
|
+
*
|
|
12
|
+
* @template T Target type to be snake cased
|
|
13
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
14
|
+
*/
|
|
15
|
+
export type SnakeCase<T> =
|
|
16
|
+
Equal<T, SnakageMain<T>> extends true ? T : SnakageMain<T>;
|
|
17
|
+
|
|
18
|
+
/* -----------------------------------------------------------
|
|
19
|
+
OBJECT CONVERSION
|
|
20
|
+
----------------------------------------------------------- */
|
|
21
|
+
|
|
22
|
+
type SnakageMain<T> = T extends [never]
|
|
23
|
+
? never // special trick for (jsonable | null) type
|
|
24
|
+
: T extends { valueOf(): boolean | bigint | number | string }
|
|
25
|
+
? ValueOf<T>
|
|
26
|
+
: T extends Function
|
|
27
|
+
? never
|
|
28
|
+
: T extends object
|
|
29
|
+
? SnakageObject<T>
|
|
30
|
+
: T;
|
|
31
|
+
|
|
32
|
+
type SnakageObject<T extends object> =
|
|
33
|
+
T extends Array<infer U>
|
|
34
|
+
? IsTuple<T> extends true
|
|
35
|
+
? SnakageTuple<T>
|
|
36
|
+
: SnakageMain<U>[]
|
|
37
|
+
: T extends Set<infer U>
|
|
38
|
+
? Set<SnakageMain<U>>
|
|
39
|
+
: T extends Map<infer K, infer V>
|
|
40
|
+
? Map<SnakageMain<K>, SnakageMain<V>>
|
|
41
|
+
: T extends WeakSet<any> | WeakMap<any, any>
|
|
42
|
+
? never
|
|
43
|
+
: T extends NativeClass
|
|
44
|
+
? T
|
|
45
|
+
: {
|
|
46
|
+
[Key in keyof T as SnakageString<Key & string>]: SnakageMain<
|
|
47
|
+
T[Key]
|
|
48
|
+
>;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/* -----------------------------------------------------------
|
|
52
|
+
SPECIAL CASES
|
|
53
|
+
----------------------------------------------------------- */
|
|
54
|
+
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
55
|
+
never,
|
|
56
|
+
]
|
|
57
|
+
? false
|
|
58
|
+
: T extends readonly any[]
|
|
59
|
+
? number extends T["length"]
|
|
60
|
+
? false
|
|
61
|
+
: true
|
|
62
|
+
: false;
|
|
63
|
+
type SnakageTuple<T extends readonly any[]> = T extends []
|
|
64
|
+
? []
|
|
65
|
+
: T extends [infer F]
|
|
66
|
+
? [SnakageMain<F>]
|
|
67
|
+
: T extends [infer F, ...infer Rest extends readonly any[]]
|
|
68
|
+
? [SnakageMain<F>, ...SnakageTuple<Rest>]
|
|
69
|
+
: T extends [(infer F)?]
|
|
70
|
+
? [SnakageMain<F>?]
|
|
71
|
+
: T extends [(infer F)?, ...infer Rest extends readonly any[]]
|
|
72
|
+
? [SnakageMain<F>?, ...SnakageTuple<Rest>]
|
|
73
|
+
: [];
|
|
74
|
+
|
|
75
|
+
/* -----------------------------------------------------------
|
|
76
|
+
STRING CONVERTER
|
|
77
|
+
----------------------------------------------------------- */
|
|
78
|
+
type SnakageString<Key extends string> = Key extends `${infer _}`
|
|
79
|
+
? SnakageStringRepeatedly<Key, "">
|
|
80
|
+
: Key;
|
|
81
|
+
type SnakageStringRepeatedly<
|
|
82
|
+
S extends string,
|
|
83
|
+
Previous extends string,
|
|
84
|
+
> = S extends `${infer First}${infer Second}${infer Rest}`
|
|
85
|
+
? `${Underscore<Previous, First>}${Lowercase<First>}${Underscore<
|
|
86
|
+
First,
|
|
87
|
+
Second
|
|
88
|
+
>}${Lowercase<Second>}${SnakageStringRepeatedly<Rest, Second>}`
|
|
89
|
+
: S extends `${infer First}`
|
|
90
|
+
? `${Underscore<Previous, First>}${Lowercase<First>}`
|
|
91
|
+
: "";
|
|
92
|
+
type Underscore<First extends string, Second extends string> = First extends
|
|
93
|
+
| UpperAlphabetic
|
|
94
|
+
| ""
|
|
95
|
+
| "_"
|
|
96
|
+
? ""
|
|
97
|
+
: Second extends UpperAlphabetic
|
|
98
|
+
? "_"
|
|
99
|
+
: "";
|
|
100
|
+
type UpperAlphabetic =
|
|
101
|
+
| "A"
|
|
102
|
+
| "B"
|
|
103
|
+
| "C"
|
|
104
|
+
| "D"
|
|
105
|
+
| "E"
|
|
106
|
+
| "F"
|
|
107
|
+
| "G"
|
|
108
|
+
| "H"
|
|
109
|
+
| "I"
|
|
110
|
+
| "J"
|
|
111
|
+
| "K"
|
|
112
|
+
| "L"
|
|
113
|
+
| "M"
|
|
114
|
+
| "N"
|
|
115
|
+
| "O"
|
|
116
|
+
| "P"
|
|
117
|
+
| "Q"
|
|
118
|
+
| "R"
|
|
119
|
+
| "S"
|
|
120
|
+
| "T"
|
|
121
|
+
| "U"
|
|
122
|
+
| "V"
|
|
123
|
+
| "W"
|
|
124
|
+
| "X"
|
|
125
|
+
| "Y"
|
|
126
|
+
| "Z";
|
package/src/TypeGuardError.ts
CHANGED
|
@@ -1,37 +1,179 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Custom error class thrown when runtime assertion fails in `typia.assert<T>()` function.
|
|
3
|
+
*
|
|
4
|
+
* This error is thrown by the `typia.assert<T>()` function when the input value
|
|
5
|
+
* doesn't match the expected type.
|
|
6
|
+
*
|
|
7
|
+
* The error provides detailed information about the first assertion failure encountered,
|
|
8
|
+
* including the access path where the error occurred, the expected type, and the actual value.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The expected type (generic for type safety)
|
|
11
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* interface IMember {
|
|
15
|
+
* name: string;
|
|
16
|
+
* age: number & ExclusiveMinimum<19>;
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* try {
|
|
20
|
+
* typia.assert<IMember>({ name: "John", age: 18 });
|
|
21
|
+
* } catch (error) {
|
|
22
|
+
* if (error instanceof TypeGuardError) {
|
|
23
|
+
* console.log(error.method); // "typia.assert"
|
|
24
|
+
* console.log(error.path); // "input.age"
|
|
25
|
+
* console.log(error.expected); // "number & ExclusiveMinimum<19>"
|
|
26
|
+
* console.log(error.value); // 18
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export class TypeGuardError<T = any> extends Error {
|
|
32
|
+
/**
|
|
33
|
+
* The name of the typia method that threw this error.
|
|
34
|
+
*
|
|
35
|
+
* @example "typia.assert"
|
|
36
|
+
*/
|
|
37
|
+
public readonly method: string;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The access path to the property where the assertion error occurred.
|
|
41
|
+
*
|
|
42
|
+
* Uses dot notation to indicate the path for nested object properties.
|
|
43
|
+
* May be `undefined` if the error occurred at the root level.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* - `"input.age"` - Error in the age property of the object
|
|
47
|
+
* - `"input.profile.email"` - Error in the email property of a nested object
|
|
48
|
+
* - `"input[0].name"` - Error in the name property of the first array element
|
|
49
|
+
* - `undefined` - Error occurred at the root level
|
|
50
|
+
*/
|
|
51
|
+
public readonly path: string | undefined;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* String representation of the expected type at the error location.
|
|
55
|
+
*
|
|
56
|
+
* Represents TypeScript types as strings, including detailed type information
|
|
57
|
+
* for complex types.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* - `"string"` - Expected string type
|
|
61
|
+
* - `"number & ExclusiveMinimum<19>"` - Expected number greater than 19
|
|
62
|
+
* - `"undefined"` - Expected undefined (when superfluous property found in assertion)
|
|
63
|
+
* - `"{ name: string; age: number }"` - Expected object type
|
|
64
|
+
*/
|
|
65
|
+
public readonly expected: string;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The actual value that failed assertion.
|
|
69
|
+
*
|
|
70
|
+
* Stores the actual value at the error path as-is.
|
|
71
|
+
* Useful for debugging by comparing the expected type with the actual value.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* - `18` - Numeric value
|
|
75
|
+
* - `"invalid"` - String value
|
|
76
|
+
* - `{ name: "John", age: 18, sex: 1 }` - Object value
|
|
77
|
+
*/
|
|
78
|
+
public readonly value: unknown;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Phantom property for type safety purposes.
|
|
82
|
+
*
|
|
83
|
+
* This property is not actually used and exists only to maintain
|
|
84
|
+
* the generic type T in TypeScript's type system.
|
|
85
|
+
* Always has an `undefined` value at runtime.
|
|
86
|
+
*
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
89
|
+
protected readonly fake_expected_typed_value_?: T | undefined;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Creates a new TypeGuardError instance.
|
|
93
|
+
*
|
|
94
|
+
* @param props - Object containing the properties needed to create the error
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const error = new TypeGuardError({
|
|
99
|
+
* method: "typia.assert",
|
|
100
|
+
* path: "input.age",
|
|
101
|
+
* expected: "number & ExclusiveMinimum<19>",
|
|
102
|
+
* value: 18
|
|
103
|
+
* });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
public constructor(props: TypeGuardError.IProps) {
|
|
107
|
+
// MESSAGE CONSTRUCTION
|
|
108
|
+
// Use custom message if provided, otherwise generate default format
|
|
109
|
+
super(
|
|
110
|
+
props.message ||
|
|
111
|
+
`Error on ${props.method}(): invalid type${
|
|
112
|
+
props.path ? ` on ${props.path}` : ""
|
|
113
|
+
}, expect to be ${props.expected}`,
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// INHERITANCE POLYFILL
|
|
117
|
+
// Set up prototype for compatibility across different JavaScript environments
|
|
118
|
+
const proto = new.target.prototype;
|
|
119
|
+
if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
|
|
120
|
+
else (this as any).__proto__ = proto;
|
|
121
|
+
|
|
122
|
+
// ASSIGN MEMBERS
|
|
123
|
+
this.method = props.method;
|
|
124
|
+
this.path = props.path;
|
|
125
|
+
this.expected = props.expected;
|
|
126
|
+
this.value = props.value;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export namespace TypeGuardError {
|
|
131
|
+
/**
|
|
132
|
+
* Interface for properties passed to the TypeGuardError constructor.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const props: TypeGuardError.IProps = {
|
|
137
|
+
* method: "typia.assertEquals",
|
|
138
|
+
* path: "input.sex",
|
|
139
|
+
* expected: "undefined",
|
|
140
|
+
* value: 1,
|
|
141
|
+
* message: "Custom error message" // optional
|
|
142
|
+
* };
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export interface IProps {
|
|
146
|
+
/**
|
|
147
|
+
* The name of the typia method that threw the error.
|
|
148
|
+
*
|
|
149
|
+
* @example "typia.assert", "typia.assertEquals"
|
|
150
|
+
*/
|
|
151
|
+
method: string;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* The access path to the property where the assertion error occurred (optional).
|
|
155
|
+
*
|
|
156
|
+
* @example "input.age", "input.profile.email"
|
|
157
|
+
*/
|
|
158
|
+
path?: undefined | string;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* String representation of the expected type at the error location.
|
|
162
|
+
*
|
|
163
|
+
* @example "string", "number & ExclusiveMinimum<19>"
|
|
164
|
+
*/
|
|
165
|
+
expected: string;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* The actual value that failed assertion.
|
|
169
|
+
*/
|
|
170
|
+
value: unknown;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Custom error message (optional).
|
|
174
|
+
*
|
|
175
|
+
* If not provided, a default format message will be automatically generated.
|
|
176
|
+
*/
|
|
177
|
+
message?: undefined | string;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
|
|
3
|
-
import { TypiaProgrammer } from "../programmers/TypiaProgrammer";
|
|
4
|
-
|
|
5
|
-
import { ArgumentParser } from "./setup/ArgumentParser";
|
|
6
|
-
import { PackageManager } from "./setup/PackageManager";
|
|
7
|
-
|
|
8
|
-
export namespace TypiaGenerateWizard {
|
|
9
|
-
export async function generate(): Promise<void> {
|
|
10
|
-
console.log("----------------------------------------");
|
|
11
|
-
console.log(" Typia Generate Wizard");
|
|
12
|
-
console.log("----------------------------------------");
|
|
13
|
-
|
|
14
|
-
// LOAD PACKAGE.JSON INFO
|
|
15
|
-
const pack: PackageManager = await PackageManager.mount();
|
|
16
|
-
const options: IArguments = await ArgumentParser.parse(pack, inquiry);
|
|
17
|
-
await TypiaProgrammer.build(options);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const inquiry: ArgumentParser.Inquiry<IArguments> = async (
|
|
21
|
-
_pack,
|
|
22
|
-
command,
|
|
23
|
-
prompt,
|
|
24
|
-
action,
|
|
25
|
-
) => {
|
|
26
|
-
// PREPARE ASSETS
|
|
27
|
-
command.option("--input [path]", "input directory");
|
|
28
|
-
command.option("--output [directory]", "output directory");
|
|
29
|
-
command.option("--project [project]", "tsconfig.json file location");
|
|
30
|
-
|
|
31
|
-
const questioned = { value: false };
|
|
32
|
-
|
|
33
|
-
const input = (name: string) => async (message: string) => {
|
|
34
|
-
const result = await prompt()({
|
|
35
|
-
type: "input",
|
|
36
|
-
name,
|
|
37
|
-
message,
|
|
38
|
-
default: "",
|
|
39
|
-
});
|
|
40
|
-
return result[name] as string;
|
|
41
|
-
};
|
|
42
|
-
const select =
|
|
43
|
-
(name: string) =>
|
|
44
|
-
(message: string) =>
|
|
45
|
-
async <Choice extends string>(choices: Choice[]): Promise<Choice> => {
|
|
46
|
-
questioned.value = true;
|
|
47
|
-
return (
|
|
48
|
-
await prompt()({
|
|
49
|
-
type: "list",
|
|
50
|
-
name: name,
|
|
51
|
-
message: message,
|
|
52
|
-
choices: choices,
|
|
53
|
-
})
|
|
54
|
-
)[name];
|
|
55
|
-
};
|
|
56
|
-
const configure = async (): Promise<string> => {
|
|
57
|
-
const files: string[] = await (
|
|
58
|
-
await fs.promises.readdir(process.cwd())
|
|
59
|
-
).filter(
|
|
60
|
-
(str) =>
|
|
61
|
-
str.substring(0, 8) === "tsconfig" &&
|
|
62
|
-
str.substring(str.length - 5) === ".json",
|
|
63
|
-
);
|
|
64
|
-
if (files.length === 0)
|
|
65
|
-
throw new URIError(`Unable to find "tsconfig.json" file.`);
|
|
66
|
-
else if (files.length === 1) return files[0]!;
|
|
67
|
-
return select("tsconfig")("TS Config File")(files);
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
return action(async (options) => {
|
|
71
|
-
options.input ??= await input("input")("input directory");
|
|
72
|
-
options.output ??= await input("output")("output directory");
|
|
73
|
-
options.project ??= await configure();
|
|
74
|
-
return options as IArguments;
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
export interface IArguments {
|
|
79
|
-
input: string;
|
|
80
|
-
output: string;
|
|
81
|
-
project: string;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
|
|
3
|
+
import { TypiaProgrammer } from "../programmers/TypiaProgrammer";
|
|
4
|
+
|
|
5
|
+
import { ArgumentParser } from "./setup/ArgumentParser";
|
|
6
|
+
import { PackageManager } from "./setup/PackageManager";
|
|
7
|
+
|
|
8
|
+
export namespace TypiaGenerateWizard {
|
|
9
|
+
export async function generate(): Promise<void> {
|
|
10
|
+
console.log("----------------------------------------");
|
|
11
|
+
console.log(" Typia Generate Wizard");
|
|
12
|
+
console.log("----------------------------------------");
|
|
13
|
+
|
|
14
|
+
// LOAD PACKAGE.JSON INFO
|
|
15
|
+
const pack: PackageManager = await PackageManager.mount();
|
|
16
|
+
const options: IArguments = await ArgumentParser.parse(pack, inquiry);
|
|
17
|
+
await TypiaProgrammer.build(options);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const inquiry: ArgumentParser.Inquiry<IArguments> = async (
|
|
21
|
+
_pack,
|
|
22
|
+
command,
|
|
23
|
+
prompt,
|
|
24
|
+
action,
|
|
25
|
+
) => {
|
|
26
|
+
// PREPARE ASSETS
|
|
27
|
+
command.option("--input [path]", "input directory");
|
|
28
|
+
command.option("--output [directory]", "output directory");
|
|
29
|
+
command.option("--project [project]", "tsconfig.json file location");
|
|
30
|
+
|
|
31
|
+
const questioned = { value: false };
|
|
32
|
+
|
|
33
|
+
const input = (name: string) => async (message: string) => {
|
|
34
|
+
const result = await prompt()({
|
|
35
|
+
type: "input",
|
|
36
|
+
name,
|
|
37
|
+
message,
|
|
38
|
+
default: "",
|
|
39
|
+
});
|
|
40
|
+
return result[name] as string;
|
|
41
|
+
};
|
|
42
|
+
const select =
|
|
43
|
+
(name: string) =>
|
|
44
|
+
(message: string) =>
|
|
45
|
+
async <Choice extends string>(choices: Choice[]): Promise<Choice> => {
|
|
46
|
+
questioned.value = true;
|
|
47
|
+
return (
|
|
48
|
+
await prompt()({
|
|
49
|
+
type: "list",
|
|
50
|
+
name: name,
|
|
51
|
+
message: message,
|
|
52
|
+
choices: choices,
|
|
53
|
+
})
|
|
54
|
+
)[name];
|
|
55
|
+
};
|
|
56
|
+
const configure = async (): Promise<string> => {
|
|
57
|
+
const files: string[] = await (
|
|
58
|
+
await fs.promises.readdir(process.cwd())
|
|
59
|
+
).filter(
|
|
60
|
+
(str) =>
|
|
61
|
+
str.substring(0, 8) === "tsconfig" &&
|
|
62
|
+
str.substring(str.length - 5) === ".json",
|
|
63
|
+
);
|
|
64
|
+
if (files.length === 0)
|
|
65
|
+
throw new URIError(`Unable to find "tsconfig.json" file.`);
|
|
66
|
+
else if (files.length === 1) return files[0]!;
|
|
67
|
+
return select("tsconfig")("TS Config File")(files);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return action(async (options) => {
|
|
71
|
+
options.input ??= await input("input")("input directory");
|
|
72
|
+
options.output ??= await input("output")("output directory");
|
|
73
|
+
options.project ??= await configure();
|
|
74
|
+
return options as IArguments;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export interface IArguments {
|
|
79
|
+
input: string;
|
|
80
|
+
output: string;
|
|
81
|
+
project: string;
|
|
82
|
+
}
|
|
83
|
+
}
|