typia 7.0.0-dev.20241003 → 7.0.0-dev.20241005
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/factories/IdentifierFactory.d.ts +1 -1
- package/lib/functional/Namespace/index.d.ts +0 -1
- package/lib/functional/Namespace/index.js +1 -2
- package/lib/functional/Namespace/index.js.map +1 -1
- package/lib/functional.d.ts +18 -54
- package/lib/functional.js +18 -75
- package/lib/functional.js.map +1 -1
- package/lib/http.d.ts +39 -91
- package/lib/http.js +26 -121
- package/lib/http.js.map +1 -1
- package/lib/index.mjs +251 -1498
- package/lib/index.mjs.map +1 -1
- package/lib/internal/$ProtobufReader.d.ts +35 -0
- package/lib/internal/$ProtobufReader.js +166 -0
- package/lib/internal/$ProtobufReader.js.map +1 -0
- package/lib/internal/$ProtobufSizer.d.ts +36 -0
- package/lib/internal/$ProtobufSizer.js +125 -0
- package/lib/internal/$ProtobufSizer.js.map +1 -0
- package/lib/internal/$ProtobufWriter.d.ts +45 -0
- package/lib/internal/$ProtobufWriter.js +104 -0
- package/lib/internal/$ProtobufWriter.js.map +1 -0
- package/lib/internal/$accessExpressionAsString.d.ts +1 -0
- package/lib/internal/$accessExpressionAsString.js +50 -0
- package/lib/internal/$accessExpressionAsString.js.map +1 -0
- package/lib/internal/$assertGuard.d.ts +2 -0
- package/lib/internal/$assertGuard.js +15 -0
- package/lib/internal/$assertGuard.js.map +1 -0
- package/lib/internal/$functionalTypeGuardErrorFactory.d.ts +2 -0
- package/lib/internal/$functionalTypeGuardErrorFactory.js +9 -0
- package/lib/internal/$functionalTypeGuardErrorFactory.js.map +1 -0
- package/lib/internal/$httpFormDataReadArray.d.ts +1 -0
- package/lib/internal/$httpFormDataReadArray.js +6 -0
- package/lib/internal/$httpFormDataReadArray.js.map +1 -0
- package/lib/internal/$httpFormDataReadBigint.d.ts +1 -0
- package/lib/internal/$httpFormDataReadBigint.js +22 -0
- package/lib/internal/$httpFormDataReadBigint.js.map +1 -0
- package/lib/internal/$httpFormDataReadBlob.d.ts +1 -0
- package/lib/internal/$httpFormDataReadBlob.js +14 -0
- package/lib/internal/$httpFormDataReadBlob.js.map +1 -0
- package/lib/internal/$httpFormDataReadBoolean.d.ts +1 -0
- package/lib/internal/$httpFormDataReadBoolean.js +20 -0
- package/lib/internal/$httpFormDataReadBoolean.js.map +1 -0
- package/lib/internal/$httpFormDataReadFile.d.ts +1 -0
- package/lib/internal/$httpFormDataReadFile.js +14 -0
- package/lib/internal/$httpFormDataReadFile.js.map +1 -0
- package/lib/internal/$httpFormDataReadNumber.d.ts +1 -0
- package/lib/internal/$httpFormDataReadNumber.js +18 -0
- package/lib/internal/$httpFormDataReadNumber.js.map +1 -0
- package/lib/internal/$httpFormDataReadString.d.ts +1 -0
- package/lib/internal/$httpFormDataReadString.js +14 -0
- package/lib/internal/$httpFormDataReadString.js.map +1 -0
- package/lib/internal/$httpHeaderReadBigint.d.ts +1 -0
- package/lib/internal/$httpHeaderReadBigint.js +16 -0
- package/lib/internal/$httpHeaderReadBigint.js.map +1 -0
- package/lib/internal/$httpHeaderReadBoolean.d.ts +1 -0
- package/lib/internal/$httpHeaderReadBoolean.js +14 -0
- package/lib/internal/$httpHeaderReadBoolean.js.map +1 -0
- package/lib/internal/$httpHeaderReadNumber.d.ts +1 -0
- package/lib/internal/$httpHeaderReadNumber.js +12 -0
- package/lib/internal/$httpHeaderReadNumber.js.map +1 -0
- package/lib/internal/$httpParameterBigint.d.ts +1 -0
- package/lib/internal/$httpParameterBigint.js +16 -0
- package/lib/internal/$httpParameterBigint.js.map +1 -0
- package/lib/internal/$httpParameterBoolean.d.ts +1 -0
- package/lib/internal/$httpParameterBoolean.js +14 -0
- package/lib/internal/$httpParameterBoolean.js.map +1 -0
- package/lib/internal/$httpParameterNumber.d.ts +1 -0
- package/lib/internal/$httpParameterNumber.js +12 -0
- package/lib/internal/$httpParameterNumber.js.map +1 -0
- package/lib/internal/$httpParameterString.d.ts +1 -0
- package/lib/internal/$httpParameterString.js +8 -0
- package/lib/internal/$httpParameterString.js.map +1 -0
- package/lib/internal/$httpQueryParseURLSearchParams.d.ts +1 -0
- package/lib/internal/$httpQueryParseURLSearchParams.js +13 -0
- package/lib/internal/$httpQueryParseURLSearchParams.js.map +1 -0
- package/lib/internal/$httpQueryReadArray.d.ts +1 -0
- package/lib/internal/$httpQueryReadArray.js +6 -0
- package/lib/internal/$httpQueryReadArray.js.map +1 -0
- package/lib/internal/$httpQueryReadBigint.d.ts +1 -0
- package/lib/internal/$httpQueryReadBigint.js +16 -0
- package/lib/internal/$httpQueryReadBigint.js.map +1 -0
- package/lib/internal/$httpQueryReadBoolean.d.ts +1 -0
- package/lib/internal/$httpQueryReadBoolean.js +18 -0
- package/lib/internal/$httpQueryReadBoolean.js.map +1 -0
- package/lib/internal/$httpQueryReadNumber.d.ts +1 -0
- package/lib/internal/$httpQueryReadNumber.js +12 -0
- package/lib/internal/$httpQueryReadNumber.js.map +1 -0
- package/lib/internal/$httpQueryReadString.d.ts +1 -0
- package/lib/internal/$httpQueryReadString.js +8 -0
- package/lib/internal/$httpQueryReadString.js.map +1 -0
- package/lib/internal/$isBetween.d.ts +1 -0
- package/lib/internal/$isBetween.js +8 -0
- package/lib/internal/$isBetween.js.map +1 -0
- package/lib/internal/$isBigintString.d.ts +1 -0
- package/lib/internal/$isBigintString.js +14 -0
- package/lib/internal/$isBigintString.js.map +1 -0
- package/lib/internal/$jsonStringifyNumber.d.ts +1 -0
- package/lib/internal/$jsonStringifyNumber.js +16 -0
- package/lib/internal/$jsonStringifyNumber.js.map +1 -0
- package/lib/internal/$jsonStringifyRest.d.ts +1 -0
- package/lib/internal/$jsonStringifyRest.js +8 -0
- package/lib/internal/$jsonStringifyRest.js.map +1 -0
- package/lib/internal/$jsonStringifyString.d.ts +1 -0
- package/lib/internal/$jsonStringifyString.js +43 -0
- package/lib/internal/$jsonStringifyString.js.map +1 -0
- package/lib/internal/$jsonStringifyTail.d.ts +1 -0
- package/lib/internal/$jsonStringifyTail.js +8 -0
- package/lib/internal/$jsonStringifyTail.js.map +1 -0
- package/lib/internal/$llmApplicationFinalize.d.ts +2 -0
- package/lib/internal/$llmApplicationFinalize.js +42 -0
- package/lib/internal/$llmApplicationFinalize.js.map +1 -0
- package/lib/internal/$miscCloneAny.d.ts +2 -0
- package/lib/internal/$miscCloneAny.js +100 -0
- package/lib/internal/$miscCloneAny.js.map +1 -0
- package/lib/internal/$notationAny.d.ts +1 -0
- package/lib/internal/$notationAny.js +60 -0
- package/lib/internal/$notationAny.js.map +1 -0
- package/lib/internal/$notationCamel.d.ts +1 -0
- package/lib/internal/$notationCamel.js +18 -0
- package/lib/internal/$notationCamel.js.map +1 -0
- package/lib/internal/$notationPascal.d.ts +1 -0
- package/lib/internal/$notationPascal.js +12 -0
- package/lib/internal/$notationPascal.js.map +1 -0
- package/lib/internal/$notationSnake.d.ts +1 -0
- package/lib/internal/$notationSnake.js +51 -0
- package/lib/internal/$notationSnake.js.map +1 -0
- package/lib/internal/$randomArray.d.ts +4 -0
- package/lib/internal/$randomArray.js +19 -0
- package/lib/internal/$randomArray.js.map +1 -0
- package/lib/internal/$randomBigint.d.ts +2 -0
- package/lib/internal/$randomBigint.js +14 -0
- package/lib/internal/$randomBigint.js.map +1 -0
- package/lib/internal/$randomBoolean.d.ts +1 -0
- package/lib/internal/$randomBoolean.js +6 -0
- package/lib/internal/$randomBoolean.js.map +1 -0
- package/lib/internal/$randomByte.d.ts +1 -0
- package/lib/internal/$randomByte.js +7 -0
- package/lib/internal/$randomByte.js.map +1 -0
- package/lib/internal/$randomFormatDate.d.ts +4 -0
- package/lib/internal/$randomFormatDate.js +17 -0
- package/lib/internal/$randomFormatDate.js.map +1 -0
- package/lib/internal/$randomFormatDatetime.d.ts +4 -0
- package/lib/internal/$randomFormatDatetime.js +15 -0
- package/lib/internal/$randomFormatDatetime.js.map +1 -0
- package/lib/internal/$randomFormatDuration.d.ts +1 -0
- package/lib/internal/$randomFormatDuration.js +55 -0
- package/lib/internal/$randomFormatDuration.js.map +1 -0
- package/lib/internal/$randomFormatEmail.d.ts +1 -0
- package/lib/internal/$randomFormatEmail.js +16 -0
- package/lib/internal/$randomFormatEmail.js.map +1 -0
- package/lib/internal/$randomFormatHostname.d.ts +1 -0
- package/lib/internal/$randomFormatHostname.js +10 -0
- package/lib/internal/$randomFormatHostname.js.map +1 -0
- package/lib/internal/$randomFormatIdnEmail.d.ts +1 -0
- package/lib/internal/$randomFormatIdnEmail.js +7 -0
- package/lib/internal/$randomFormatIdnEmail.js.map +1 -0
- package/lib/internal/$randomFormatIdnHostname.d.ts +1 -0
- package/lib/internal/$randomFormatIdnHostname.js +7 -0
- package/lib/internal/$randomFormatIdnHostname.js.map +1 -0
- package/lib/internal/$randomFormatIpv4.d.ts +1 -0
- package/lib/internal/$randomFormatIpv4.js +15 -0
- package/lib/internal/$randomFormatIpv4.js.map +1 -0
- package/lib/internal/$randomFormatIpv6.d.ts +1 -0
- package/lib/internal/$randomFormatIpv6.js +15 -0
- package/lib/internal/$randomFormatIpv6.js.map +1 -0
- package/lib/internal/$randomFormatIri.d.ts +1 -0
- package/lib/internal/$randomFormatIri.js +7 -0
- package/lib/internal/$randomFormatIri.js.map +1 -0
- package/lib/internal/$randomFormatIriReference.d.ts +1 -0
- package/lib/internal/$randomFormatIriReference.js +7 -0
- package/lib/internal/$randomFormatIriReference.js.map +1 -0
- package/lib/internal/$randomFormatJsonPointer.d.ts +1 -0
- package/lib/internal/$randomFormatJsonPointer.js +12 -0
- package/lib/internal/$randomFormatJsonPointer.js.map +1 -0
- package/lib/internal/$randomFormatPassword.d.ts +1 -0
- package/lib/internal/$randomFormatPassword.js +13 -0
- package/lib/internal/$randomFormatPassword.js.map +1 -0
- package/lib/internal/$randomFormatRegex.d.ts +1 -0
- package/lib/internal/$randomFormatRegex.js +7 -0
- package/lib/internal/$randomFormatRegex.js.map +1 -0
- package/lib/internal/$randomFormatRelativeJsonPointer.d.ts +1 -0
- package/lib/internal/$randomFormatRelativeJsonPointer.js +13 -0
- package/lib/internal/$randomFormatRelativeJsonPointer.js.map +1 -0
- package/lib/internal/$randomFormatTime.d.ts +1 -0
- package/lib/internal/$randomFormatTime.js +15 -0
- package/lib/internal/$randomFormatTime.js.map +1 -0
- package/lib/internal/$randomFormatUri.d.ts +1 -0
- package/lib/internal/$randomFormatUri.js +7 -0
- package/lib/internal/$randomFormatUri.js.map +1 -0
- package/lib/internal/$randomFormatUriReference.d.ts +1 -0
- package/lib/internal/$randomFormatUriReference.js +7 -0
- package/lib/internal/$randomFormatUriReference.js.map +1 -0
- package/lib/internal/$randomFormatUriTemplate.d.ts +1 -0
- package/lib/internal/$randomFormatUriTemplate.js +7 -0
- package/lib/internal/$randomFormatUriTemplate.js.map +1 -0
- package/lib/internal/$randomFormatUrl.d.ts +1 -0
- package/lib/internal/$randomFormatUrl.js +16 -0
- package/lib/internal/$randomFormatUrl.js.map +1 -0
- package/lib/internal/$randomInteger.d.ts +2 -0
- package/lib/internal/$randomInteger.js +39 -0
- package/lib/internal/$randomInteger.js.map +1 -0
- package/lib/internal/$randomNumber.d.ts +2 -0
- package/lib/internal/$randomNumber.js +56 -0
- package/lib/internal/$randomNumber.js.map +1 -0
- package/lib/internal/$randomPattern.d.ts +1 -0
- package/lib/internal/$randomPattern.js +18 -0
- package/lib/internal/$randomPattern.js.map +1 -0
- package/lib/internal/$randomPick.d.ts +1 -0
- package/lib/internal/$randomPick.js +13 -0
- package/lib/internal/$randomPick.js.map +1 -0
- package/lib/internal/$randomString.d.ts +2 -0
- package/lib/internal/$randomString.js +23 -0
- package/lib/internal/$randomString.js.map +1 -0
- package/lib/internal/$randomUuid.d.ts +1 -0
- package/lib/internal/$randomUuid.js +12 -0
- package/lib/internal/$randomUuid.js.map +1 -0
- package/lib/internal/$throwTypeGuardError.d.ts +2 -0
- package/lib/internal/$throwTypeGuardError.js +9 -0
- package/lib/internal/$throwTypeGuardError.js.map +1 -0
- package/lib/internal/$validateReport.d.ts +2 -0
- package/lib/internal/$validateReport.js +18 -0
- package/lib/internal/$validateReport.js.map +1 -0
- package/lib/internal/private/$__IProtobufWriter.d.ts +15 -0
- package/lib/internal/private/$__IProtobufWriter.js +3 -0
- package/lib/internal/private/$__IProtobufWriter.js.map +1 -0
- package/lib/internal/private/$__notationCapitalize.d.ts +1 -0
- package/lib/internal/private/$__notationCapitalize.js +8 -0
- package/lib/internal/private/$__notationCapitalize.js.map +1 -0
- package/lib/internal/private/$__notationUnsnake.d.ts +4 -0
- package/lib/internal/private/$__notationUnsnake.js +28 -0
- package/lib/internal/private/$__notationUnsnake.js.map +1 -0
- package/lib/json.d.ts +27 -55
- package/lib/json.js +14 -62
- package/lib/json.js.map +1 -1
- package/lib/misc.d.ts +30 -62
- package/lib/misc.js +16 -80
- package/lib/misc.js.map +1 -1
- package/lib/module.d.ts +32 -64
- package/lib/module.js +17 -38
- package/lib/module.js.map +1 -1
- package/lib/notations.d.ts +45 -93
- package/lib/notations.js +24 -114
- package/lib/notations.js.map +1 -1
- package/lib/programmers/AssertProgrammer.d.ts +2 -2
- package/lib/programmers/AssertProgrammer.js +24 -17
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.d.ts +9 -9
- package/lib/programmers/CheckerProgrammer.js +46 -46
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +8 -8
- package/lib/programmers/FeatureProgrammer.js +10 -10
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/ImportProgrammer.d.ts +10 -0
- package/lib/programmers/ImportProgrammer.js +119 -0
- package/lib/programmers/ImportProgrammer.js.map +1 -0
- package/lib/programmers/IsProgrammer.d.ts +6 -6
- package/lib/programmers/IsProgrammer.js +11 -13
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.d.ts +2 -2
- package/lib/programmers/RandomProgrammer.js +63 -63
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.d.ts +2 -2
- package/lib/programmers/ValidateProgrammer.js +9 -10
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.d.ts +1 -1
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +2 -3
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +1 -1
- package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js +1 -1
- package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js.map +1 -1
- package/lib/programmers/helpers/{FunctionImporter.d.ts → FunctionProgrammer.d.ts} +4 -1
- package/lib/programmers/helpers/{FunctionImporter.js → FunctionProgrammer.js} +19 -16
- package/lib/programmers/helpers/FunctionProgrammer.js.map +1 -0
- package/lib/programmers/helpers/StringifyJoinder.d.ts +2 -2
- package/lib/programmers/helpers/StringifyJoinder.js +1 -1
- package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
- package/lib/programmers/helpers/disable_function_programmer_declare.d.ts +2 -0
- package/lib/programmers/helpers/disable_function_programmer_declare.js +19 -0
- package/lib/programmers/helpers/disable_function_programmer_declare.js.map +1 -0
- package/lib/programmers/http/HttpAssertFormDataProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpAssertFormDataProgrammer.js +4 -4
- package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpAssertHeadersProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpAssertHeadersProgrammer.js +4 -4
- package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpAssertQueryProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpAssertQueryProgrammer.js +4 -4
- package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpFormDataProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpFormDataProgrammer.js +13 -12
- package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.d.ts +3 -3
- package/lib/programmers/http/HttpHeadersProgrammer.js +37 -31
- package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpIsFormDataProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpIsFormDataProgrammer.js +4 -4
- package/lib/programmers/http/HttpIsFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpIsHeadersProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpIsHeadersProgrammer.js +4 -4
- package/lib/programmers/http/HttpIsHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpIsQueryProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpIsQueryProgrammer.js +4 -4
- package/lib/programmers/http/HttpIsQueryProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpParameterProgrammer.js +3 -4
- package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpQueryProgrammer.js +14 -13
- package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpValidateFormDataProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpValidateFormDataProgrammer.js +4 -4
- package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpValidateHeadersProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpValidateHeadersProgrammer.js +4 -4
- package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpValidateQueryProgrammer.d.ts +2 -2
- package/lib/programmers/http/HttpValidateQueryProgrammer.js +4 -4
- package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_key.js +2 -2
- package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_properties.js +1 -2
- package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/check_object.js +0 -1
- package/lib/programmers/internal/check_object.js.map +1 -1
- package/lib/programmers/internal/feature_object_entries.js +3 -2
- package/lib/programmers/internal/feature_object_entries.js.map +1 -1
- package/lib/programmers/json/JsonAssertParseProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonAssertParseProgrammer.js +4 -4
- package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonAssertStringifyProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonAssertStringifyProgrammer.js +4 -4
- package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonIsParseProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonIsParseProgrammer.js +4 -4
- package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonIsStringifyProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonIsStringifyProgrammer.js +4 -4
- package/lib/programmers/json/JsonIsStringifyProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonStringifyProgrammer.js +38 -33
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonValidateParseProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonValidateParseProgrammer.js +4 -4
- package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonValidateStringifyProgrammer.d.ts +2 -2
- package/lib/programmers/json/JsonValidateStringifyProgrammer.js +4 -4
- package/lib/programmers/json/JsonValidateStringifyProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.d.ts +1 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.js +11 -11
- package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.d.ts +1 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.js +12 -12
- package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscAssertCloneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscAssertCloneProgrammer.js +4 -4
- package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscAssertPruneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscAssertPruneProgrammer.js +4 -4
- package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscCloneProgrammer.js +43 -37
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscIsCloneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscIsCloneProgrammer.js +4 -4
- package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscIsPruneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscIsPruneProgrammer.js +4 -4
- package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscPruneProgrammer.js +33 -29
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscValidateCloneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscValidateCloneProgrammer.js +4 -4
- package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscValidatePruneProgrammer.d.ts +2 -2
- package/lib/programmers/misc/MiscValidatePruneProgrammer.js +4 -4
- package/lib/programmers/misc/MiscValidatePruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +2 -2
- package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +4 -4
- package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +2 -2
- package/lib/programmers/notations/NotationGeneralProgrammer.js +49 -35
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationIsGeneralProgrammer.d.ts +2 -2
- package/lib/programmers/notations/NotationIsGeneralProgrammer.js +4 -4
- package/lib/programmers/notations/NotationIsGeneralProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +2 -2
- package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +4 -4
- package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +4 -4
- package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +4 -4
- package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +14 -14
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +26 -22
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +4 -4
- package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.js +4 -4
- package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +4 -4
- package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.d.ts +2 -2
- package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js +4 -4
- package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js.map +1 -1
- package/lib/protobuf.d.ts +31 -63
- package/lib/protobuf.js +16 -83
- package/lib/protobuf.js.map +1 -1
- package/lib/reflect.d.ts +2 -4
- package/lib/reflect.js +1 -3
- package/lib/reflect.js.map +1 -1
- package/lib/transformers/FileTransformer.d.ts +1 -1
- package/lib/transformers/FileTransformer.js +36 -2
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/ITypiaContext.d.ts +2 -0
- package/lib/transformers/features/llm/LlmApplicationTransformer.js +1 -3
- package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
- package/lib/utils/NamingConvention.d.ts +5 -0
- package/lib/utils/NamingConvention.js +102 -0
- package/lib/utils/NamingConvention.js.map +1 -0
- package/lib/utils/StringUtil.d.ts +8 -0
- package/lib/utils/StringUtil.js +19 -0
- package/lib/utils/StringUtil.js.map +1 -0
- package/package.json +2 -2
- package/src/CamelCase.ts +75 -75
- package/src/IRandomGenerator.ts +0 -1
- package/src/PascalCase.ts +71 -71
- package/src/Primitive.ts +92 -92
- package/src/SnakeCase.ts +126 -126
- package/src/factories/ExpressionFactory.ts +164 -164
- package/src/factories/IdentifierFactory.ts +89 -89
- package/src/factories/MetadataTypeTagFactory.ts +385 -385
- package/src/factories/NumericRangeFactory.ts +72 -72
- package/src/factories/TemplateFactory.ts +64 -64
- package/src/functional/$clone.ts +48 -48
- package/src/functional/$throws.ts +10 -10
- package/src/functional/Namespace/index.ts +0 -2
- package/src/functional/Namespace/json.ts +15 -15
- package/src/functional/Namespace/misc.ts +14 -14
- package/src/functional/Namespace/notations.ts +23 -23
- package/src/functional.ts +36 -158
- package/src/http.ts +79 -303
- package/src/internal/$ProtobufReader.ts +194 -0
- package/src/internal/$ProtobufSizer.ts +151 -0
- package/src/internal/$ProtobufWriter.ts +145 -0
- package/src/internal/$accessExpressionAsString.ts +46 -0
- package/src/internal/$assertGuard.ts +13 -0
- package/src/internal/$functionalTypeGuardErrorFactory.ts +4 -0
- package/src/internal/$httpFormDataReadArray.ts +4 -0
- package/src/internal/$httpFormDataReadBigint.ts +18 -0
- package/src/internal/$httpFormDataReadBlob.ts +10 -0
- package/src/internal/$httpFormDataReadBoolean.ts +16 -0
- package/src/internal/$httpFormDataReadFile.ts +10 -0
- package/src/internal/$httpFormDataReadNumber.ts +15 -0
- package/src/internal/$httpFormDataReadString.ts +10 -0
- package/src/internal/$httpHeaderReadBigint.ts +10 -0
- package/src/internal/$httpHeaderReadBoolean.ts +8 -0
- package/src/internal/$httpHeaderReadNumber.ts +7 -0
- package/src/internal/$httpParameterBigint.ts +10 -0
- package/src/internal/$httpParameterBoolean.ts +8 -0
- package/src/internal/$httpParameterNumber.ts +7 -0
- package/src/internal/$httpParameterString.ts +2 -0
- package/src/internal/$httpQueryParseURLSearchParams.ts +10 -0
- package/src/internal/$httpQueryReadArray.ts +4 -0
- package/src/internal/$httpQueryReadBigint.ts +12 -0
- package/src/internal/$httpQueryReadBoolean.ts +14 -0
- package/src/internal/$httpQueryReadNumber.ts +9 -0
- package/src/internal/$httpQueryReadString.ts +4 -0
- package/src/internal/$isBetween.ts +2 -0
- package/src/internal/$isBigintString.ts +8 -0
- package/src/internal/$jsonStringifyNumber.ts +12 -0
- package/src/internal/$jsonStringifyRest.ts +3 -0
- package/src/internal/$jsonStringifyString.ts +43 -0
- package/src/internal/$jsonStringifyTail.ts +2 -0
- package/src/internal/$llmApplicationFinalize.ts +18 -0
- package/src/internal/$miscCloneAny.ts +48 -0
- package/src/internal/$notationAny.ts +37 -0
- package/src/internal/$notationCamel.ts +13 -0
- package/src/internal/$notationPascal.ts +8 -0
- package/src/{utils/NamingConvention/NamingConvention.ts → internal/$notationSnake.ts} +43 -87
- package/src/internal/$randomArray.ts +20 -0
- package/src/internal/$randomBigint.ts +15 -0
- package/src/internal/$randomBoolean.ts +1 -0
- package/src/internal/$randomByte.ts +3 -0
- package/src/internal/$randomFormatDate.ts +17 -0
- package/src/internal/$randomFormatDatetime.ts +15 -0
- package/src/internal/$randomFormatDuration.ts +26 -0
- package/src/internal/$randomFormatEmail.ts +11 -0
- package/src/internal/$randomFormatHostname.ts +6 -0
- package/src/internal/$randomFormatIdnEmail.ts +3 -0
- package/src/internal/$randomFormatIdnHostname.ts +3 -0
- package/src/internal/$randomFormatIpv4.ts +10 -0
- package/src/internal/$randomFormatIpv6.ts +10 -0
- package/src/internal/$randomFormatIri.ts +3 -0
- package/src/internal/$randomFormatIriReference.ts +3 -0
- package/src/internal/$randomFormatJsonPointer.ts +7 -0
- package/src/internal/$randomFormatPassword.ts +8 -0
- package/src/internal/$randomFormatRegex.ts +4 -0
- package/src/internal/$randomFormatRelativeJsonPointer.ts +8 -0
- package/src/internal/$randomFormatTime.ts +13 -0
- package/src/internal/$randomFormatUri.ts +3 -0
- package/src/internal/$randomFormatUriReference.ts +3 -0
- package/src/internal/$randomFormatUriTemplate.ts +3 -0
- package/src/internal/$randomFormatUrl.ts +11 -0
- package/src/internal/$randomInteger.ts +44 -0
- package/src/internal/$randomNumber.ts +71 -0
- package/src/internal/$randomPattern.ts +10 -0
- package/src/internal/$randomPick.ts +8 -0
- package/src/internal/$randomString.ts +24 -0
- package/src/internal/$randomUuid.ts +6 -0
- package/src/internal/$throwTypeGuardError.ts +5 -0
- package/src/internal/$validateReport.ts +13 -0
- package/src/internal/private/$__IProtobufWriter.ts +18 -0
- package/src/internal/private/$__notationCapitalize.ts +2 -0
- package/src/internal/private/$__notationUnsnake.ts +24 -0
- package/src/json.ts +47 -134
- package/src/misc.ts +52 -151
- package/src/module.ts +50 -128
- package/src/notations.ts +76 -269
- package/src/programmers/AssertProgrammer.ts +51 -36
- package/src/programmers/CheckerProgrammer.ts +69 -69
- package/src/programmers/FeatureProgrammer.ts +18 -18
- package/src/programmers/ImportProgrammer.ts +109 -0
- package/src/programmers/IsProgrammer.ts +16 -18
- package/src/programmers/RandomProgrammer.ts +80 -80
- package/src/programmers/ValidateProgrammer.ts +15 -21
- package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +4 -9
- package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +1 -1
- package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +1 -1
- package/src/programmers/helpers/AtomicPredicator.ts +35 -35
- package/src/programmers/helpers/CloneJoiner.ts +143 -143
- package/src/programmers/helpers/{FunctionImporter.ts → FunctionProgrammer.ts} +4 -1
- package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
- package/src/programmers/helpers/NotationJoiner.ts +144 -144
- package/src/programmers/helpers/ProtobufUtil.ts +125 -125
- package/src/programmers/helpers/PruneJoiner.ts +148 -148
- package/src/programmers/helpers/RandomJoiner.ts +162 -162
- package/src/programmers/helpers/StringifyJoinder.ts +115 -114
- package/src/programmers/helpers/StringifyPredicator.ts +13 -13
- package/src/programmers/helpers/UnionExplorer.ts +372 -372
- package/src/programmers/helpers/UnionPredicator.ts +77 -77
- package/src/programmers/helpers/disable_function_programmer_declare.ts +35 -0
- package/src/programmers/http/HttpAssertFormDataProgrammer.ts +5 -5
- package/src/programmers/http/HttpAssertHeadersProgrammer.ts +5 -5
- package/src/programmers/http/HttpAssertQueryProgrammer.ts +5 -5
- package/src/programmers/http/HttpFormDataProgrammer.ts +20 -17
- package/src/programmers/http/HttpHeadersProgrammer.ts +62 -36
- package/src/programmers/http/HttpIsFormDataProgrammer.ts +5 -5
- package/src/programmers/http/HttpIsHeadersProgrammer.ts +5 -5
- package/src/programmers/http/HttpIsQueryProgrammer.ts +5 -5
- package/src/programmers/http/HttpParameterProgrammer.ts +6 -9
- package/src/programmers/http/HttpQueryProgrammer.ts +21 -18
- package/src/programmers/http/HttpValidateFormDataProgrammer.ts +5 -5
- package/src/programmers/http/HttpValidateHeadersProgrammer.ts +5 -5
- package/src/programmers/http/HttpValidateQueryProgrammer.ts +5 -5
- package/src/programmers/internal/application_array.ts +56 -56
- package/src/programmers/internal/application_boolean.ts +25 -25
- package/src/programmers/internal/application_description.ts +12 -12
- package/src/programmers/internal/application_number.ts +25 -25
- package/src/programmers/internal/application_plugin.ts +19 -19
- package/src/programmers/internal/application_string.ts +25 -25
- package/src/programmers/internal/application_templates.ts +64 -64
- package/src/programmers/internal/application_title.ts +20 -20
- package/src/programmers/internal/application_union_discriminator.ts +35 -35
- package/src/programmers/internal/application_v30_native.ts +29 -29
- package/src/programmers/internal/application_v31_alias.ts +47 -47
- package/src/programmers/internal/application_v31_native.ts +25 -25
- package/src/programmers/internal/application_v31_tuple.ts +22 -22
- package/src/programmers/internal/check_dynamic_key.ts +2 -4
- package/src/programmers/internal/check_dynamic_properties.ts +1 -5
- package/src/programmers/internal/check_everything.ts +23 -23
- package/src/programmers/internal/check_native.ts +27 -27
- package/src/programmers/internal/check_object.ts +0 -3
- package/src/programmers/internal/check_template.ts +48 -48
- package/src/programmers/internal/check_union_array_like.ts +334 -334
- package/src/programmers/internal/decode_union_object.ts +116 -116
- package/src/programmers/internal/feature_object_entries.ts +61 -58
- 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 +63 -63
- package/src/programmers/internal/random_custom.ts +39 -39
- 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/JsonAssertParseProgrammer.ts +5 -5
- package/src/programmers/json/JsonAssertStringifyProgrammer.ts +5 -5
- package/src/programmers/json/JsonIsParseProgrammer.ts +5 -5
- package/src/programmers/json/JsonIsStringifyProgrammer.ts +5 -5
- package/src/programmers/json/JsonStringifyProgrammer.ts +60 -51
- package/src/programmers/json/JsonValidateParseProgrammer.ts +5 -5
- package/src/programmers/json/JsonValidateStringifyProgrammer.ts +5 -5
- package/src/programmers/llm/LlmApplicationProgrammer.ts +12 -12
- package/src/programmers/llm/LlmSchemaProgrammer.ts +14 -12
- package/src/programmers/misc/MiscAssertCloneProgrammer.ts +5 -5
- package/src/programmers/misc/MiscAssertPruneProgrammer.ts +5 -5
- package/src/programmers/misc/MiscCloneProgrammer.ts +63 -53
- package/src/programmers/misc/MiscIsCloneProgrammer.ts +5 -5
- package/src/programmers/misc/MiscIsPruneProgrammer.ts +5 -5
- package/src/programmers/misc/MiscPruneProgrammer.ts +51 -43
- package/src/programmers/misc/MiscValidateCloneProgrammer.ts +5 -5
- package/src/programmers/misc/MiscValidatePruneProgrammer.ts +5 -5
- package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +5 -5
- package/src/programmers/notations/NotationGeneralProgrammer.ts +79 -59
- package/src/programmers/notations/NotationIsGeneralProgrammer.ts +5 -5
- package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +5 -5
- package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +5 -5
- package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +5 -5
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +21 -21
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +41 -32
- package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +5 -5
- package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +5 -5
- package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +5 -5
- package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +5 -5
- package/src/protobuf.ts +51 -182
- package/src/reflect.ts +3 -9
- package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
- package/src/schemas/metadata/MetadataObject.ts +139 -139
- package/src/transformers/FileTransformer.ts +21 -2
- package/src/transformers/ITypiaContext.ts +3 -0
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +1 -6
- package/src/typings/Equal.ts +18 -18
- package/src/typings/IsTuple.ts +9 -9
- package/src/typings/NativeClass.ts +23 -23
- package/src/typings/ValueOf.ts +20 -20
- package/src/utils/MapUtil.ts +14 -14
- package/src/utils/NameEncoder.ts +32 -32
- package/src/utils/NamingConvention.ts +94 -0
- package/src/utils/StringUtil.ts +16 -0
- package/lib/functional/$every.d.ts +0 -2
- package/lib/functional/$every.js +0 -12
- package/lib/functional/$every.js.map +0 -1
- package/lib/programmers/helpers/FunctionImporter.js.map +0 -1
- package/lib/programmers/helpers/disable_function_importer_declare.d.ts +0 -2
- package/lib/programmers/helpers/disable_function_importer_declare.js +0 -19
- package/lib/programmers/helpers/disable_function_importer_declare.js.map +0 -1
- package/lib/utils/NamingConvention/NamingConvention.d.ts +0 -3
- package/lib/utils/NamingConvention/NamingConvention.js +0 -93
- package/lib/utils/NamingConvention/NamingConvention.js.map +0 -1
- package/lib/utils/NamingConvention/index.d.ts +0 -1
- package/lib/utils/NamingConvention/index.js +0 -28
- package/lib/utils/NamingConvention/index.js.map +0 -1
- package/lib/utils/StringUtil/StringUtil.d.ts +0 -6
- package/lib/utils/StringUtil/StringUtil.js +0 -18
- package/lib/utils/StringUtil/StringUtil.js.map +0 -1
- package/lib/utils/StringUtil/index.d.ts +0 -1
- package/lib/utils/StringUtil/index.js +0 -28
- package/lib/utils/StringUtil/index.js.map +0 -1
- package/src/functional/$every.ts +0 -11
- package/src/programmers/helpers/disable_function_importer_declare.ts +0 -33
- package/src/utils/NamingConvention/index.ts +0 -1
- package/src/utils/StringUtil/StringUtil.ts +0 -14
- package/src/utils/StringUtil/index.ts +0 -1
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";
|
|
@@ -1,164 +1,164 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
|
|
3
|
-
import { RandomGenerator } from "../utils/RandomGenerator";
|
|
4
|
-
|
|
5
|
-
export namespace ExpressionFactory {
|
|
6
|
-
export const number = (value: number) =>
|
|
7
|
-
value < 0
|
|
8
|
-
? ts.factory.createPrefixUnaryExpression(
|
|
9
|
-
ts.SyntaxKind.MinusToken,
|
|
10
|
-
ts.factory.createNumericLiteral(Math.abs(value)),
|
|
11
|
-
)
|
|
12
|
-
: ts.factory.createNumericLiteral(value);
|
|
13
|
-
|
|
14
|
-
export const bigint = (value: number | bigint) =>
|
|
15
|
-
ts.factory.createCallExpression(
|
|
16
|
-
ts.factory.createIdentifier("BigInt"),
|
|
17
|
-
undefined,
|
|
18
|
-
[ts.factory.createIdentifier(value.toString())],
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
export const isRequired = (input: ts.Expression): ts.Expression =>
|
|
22
|
-
ts.factory.createStrictInequality(
|
|
23
|
-
ts.factory.createIdentifier("undefined"),
|
|
24
|
-
input,
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
export const isArray = (input: ts.Expression): ts.Expression =>
|
|
28
|
-
ts.factory.createCallExpression(
|
|
29
|
-
ts.factory.createIdentifier("Array.isArray"),
|
|
30
|
-
undefined,
|
|
31
|
-
[input],
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
export const isObject = (props: {
|
|
35
|
-
checkNull: boolean;
|
|
36
|
-
checkArray: boolean;
|
|
37
|
-
input: ts.Expression;
|
|
38
|
-
}): ts.Expression => {
|
|
39
|
-
const conditions: ts.Expression[] = [
|
|
40
|
-
ts.factory.createStrictEquality(
|
|
41
|
-
ts.factory.createStringLiteral("object"),
|
|
42
|
-
ts.factory.createTypeOfExpression(props.input),
|
|
43
|
-
),
|
|
44
|
-
];
|
|
45
|
-
if (props.checkNull === true)
|
|
46
|
-
conditions.push(
|
|
47
|
-
ts.factory.createStrictInequality(ts.factory.createNull(), props.input),
|
|
48
|
-
);
|
|
49
|
-
if (props.checkArray === true)
|
|
50
|
-
conditions.push(
|
|
51
|
-
ts.factory.createStrictEquality(
|
|
52
|
-
ts.factory.createFalse(),
|
|
53
|
-
ts.factory.createCallExpression(
|
|
54
|
-
ts.factory.createIdentifier("Array.isArray"),
|
|
55
|
-
undefined,
|
|
56
|
-
[props.input],
|
|
57
|
-
),
|
|
58
|
-
),
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
return conditions.length === 1
|
|
62
|
-
? conditions[0]!
|
|
63
|
-
: conditions.reduce((x, y) => ts.factory.createLogicalAnd(x, y));
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
export const isInstanceOf = (
|
|
67
|
-
type: string,
|
|
68
|
-
input: ts.Expression,
|
|
69
|
-
): ts.Expression => {
|
|
70
|
-
return ts.factory.createBinaryExpression(
|
|
71
|
-
input,
|
|
72
|
-
ts.factory.createToken(ts.SyntaxKind.InstanceOfKeyword),
|
|
73
|
-
ts.factory.createIdentifier(type),
|
|
74
|
-
);
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export const coalesce = (x: ts.Expression, y: ts.Expression): ts.Expression =>
|
|
78
|
-
ts.factory.createBinaryExpression(
|
|
79
|
-
x,
|
|
80
|
-
ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
|
|
81
|
-
y,
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
export const currying = (props: {
|
|
85
|
-
function: ts.Expression;
|
|
86
|
-
arguments: ts.Expression[];
|
|
87
|
-
}) => {
|
|
88
|
-
if (props.arguments.length === 0)
|
|
89
|
-
return ts.factory.createCallExpression(
|
|
90
|
-
props.function,
|
|
91
|
-
undefined,
|
|
92
|
-
undefined,
|
|
93
|
-
);
|
|
94
|
-
let prev: ts.CallExpression = ts.factory.createCallExpression(
|
|
95
|
-
props.function,
|
|
96
|
-
undefined,
|
|
97
|
-
[props.arguments[0]!],
|
|
98
|
-
);
|
|
99
|
-
for (const param of props.arguments.slice(1))
|
|
100
|
-
prev = ts.factory.createCallExpression(prev, undefined, [param]);
|
|
101
|
-
return prev;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
export const selfCall = (body: ts.ConciseBody) =>
|
|
105
|
-
ts.isCallExpression(body)
|
|
106
|
-
? body
|
|
107
|
-
: ts.factory.createCallExpression(
|
|
108
|
-
ts.factory.createParenthesizedExpression(
|
|
109
|
-
ts.factory.createArrowFunction(
|
|
110
|
-
undefined,
|
|
111
|
-
undefined,
|
|
112
|
-
[],
|
|
113
|
-
undefined,
|
|
114
|
-
undefined,
|
|
115
|
-
body,
|
|
116
|
-
),
|
|
117
|
-
),
|
|
118
|
-
undefined,
|
|
119
|
-
undefined,
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
export const getEscapedText = (props: {
|
|
123
|
-
printer: ts.Printer;
|
|
124
|
-
input: ts.Expression;
|
|
125
|
-
}): string =>
|
|
126
|
-
props.printer.printNode(
|
|
127
|
-
ts.EmitHint.Expression,
|
|
128
|
-
props.input,
|
|
129
|
-
props.input.getSourceFile(),
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
export const transpile = (
|
|
133
|
-
transformer: ts.TransformationContext,
|
|
134
|
-
script: string,
|
|
135
|
-
) => {
|
|
136
|
-
const file: ts.SourceFile = ts.createSourceFile(
|
|
137
|
-
`${RandomGenerator.uuid()}.ts`,
|
|
138
|
-
script,
|
|
139
|
-
ts.ScriptTarget.ESNext,
|
|
140
|
-
true,
|
|
141
|
-
ts.ScriptKind.TS,
|
|
142
|
-
);
|
|
143
|
-
const statement: ts.Statement | undefined = file.statements[0];
|
|
144
|
-
if (statement === undefined)
|
|
145
|
-
throw new ReferenceError(
|
|
146
|
-
"Error on ExpressionFactory.transpile(): no statement exists.",
|
|
147
|
-
);
|
|
148
|
-
else if (!ts.isExpressionStatement(statement))
|
|
149
|
-
throw new TypeError(
|
|
150
|
-
"Error on ExpressionFactory.transpile(): statement is not an expression statement.",
|
|
151
|
-
);
|
|
152
|
-
return (input: ts.Expression): ts.Expression => {
|
|
153
|
-
const visitor = (node: ts.Node): ts.Node => {
|
|
154
|
-
if (ts.isIdentifier(node) && node.text === "$input") return input;
|
|
155
|
-
return ts.visitEachChild(
|
|
156
|
-
(ts.factory as any).cloneNode(node),
|
|
157
|
-
visitor,
|
|
158
|
-
transformer,
|
|
159
|
-
);
|
|
160
|
-
};
|
|
161
|
-
return visitor(statement.expression) as ts.Expression;
|
|
162
|
-
};
|
|
163
|
-
};
|
|
164
|
-
}
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
|
|
3
|
+
import { RandomGenerator } from "../utils/RandomGenerator";
|
|
4
|
+
|
|
5
|
+
export namespace ExpressionFactory {
|
|
6
|
+
export const number = (value: number) =>
|
|
7
|
+
value < 0
|
|
8
|
+
? ts.factory.createPrefixUnaryExpression(
|
|
9
|
+
ts.SyntaxKind.MinusToken,
|
|
10
|
+
ts.factory.createNumericLiteral(Math.abs(value)),
|
|
11
|
+
)
|
|
12
|
+
: ts.factory.createNumericLiteral(value);
|
|
13
|
+
|
|
14
|
+
export const bigint = (value: number | bigint) =>
|
|
15
|
+
ts.factory.createCallExpression(
|
|
16
|
+
ts.factory.createIdentifier("BigInt"),
|
|
17
|
+
undefined,
|
|
18
|
+
[ts.factory.createIdentifier(value.toString())],
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export const isRequired = (input: ts.Expression): ts.Expression =>
|
|
22
|
+
ts.factory.createStrictInequality(
|
|
23
|
+
ts.factory.createIdentifier("undefined"),
|
|
24
|
+
input,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
export const isArray = (input: ts.Expression): ts.Expression =>
|
|
28
|
+
ts.factory.createCallExpression(
|
|
29
|
+
ts.factory.createIdentifier("Array.isArray"),
|
|
30
|
+
undefined,
|
|
31
|
+
[input],
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export const isObject = (props: {
|
|
35
|
+
checkNull: boolean;
|
|
36
|
+
checkArray: boolean;
|
|
37
|
+
input: ts.Expression;
|
|
38
|
+
}): ts.Expression => {
|
|
39
|
+
const conditions: ts.Expression[] = [
|
|
40
|
+
ts.factory.createStrictEquality(
|
|
41
|
+
ts.factory.createStringLiteral("object"),
|
|
42
|
+
ts.factory.createTypeOfExpression(props.input),
|
|
43
|
+
),
|
|
44
|
+
];
|
|
45
|
+
if (props.checkNull === true)
|
|
46
|
+
conditions.push(
|
|
47
|
+
ts.factory.createStrictInequality(ts.factory.createNull(), props.input),
|
|
48
|
+
);
|
|
49
|
+
if (props.checkArray === true)
|
|
50
|
+
conditions.push(
|
|
51
|
+
ts.factory.createStrictEquality(
|
|
52
|
+
ts.factory.createFalse(),
|
|
53
|
+
ts.factory.createCallExpression(
|
|
54
|
+
ts.factory.createIdentifier("Array.isArray"),
|
|
55
|
+
undefined,
|
|
56
|
+
[props.input],
|
|
57
|
+
),
|
|
58
|
+
),
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
return conditions.length === 1
|
|
62
|
+
? conditions[0]!
|
|
63
|
+
: conditions.reduce((x, y) => ts.factory.createLogicalAnd(x, y));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const isInstanceOf = (
|
|
67
|
+
type: string,
|
|
68
|
+
input: ts.Expression,
|
|
69
|
+
): ts.Expression => {
|
|
70
|
+
return ts.factory.createBinaryExpression(
|
|
71
|
+
input,
|
|
72
|
+
ts.factory.createToken(ts.SyntaxKind.InstanceOfKeyword),
|
|
73
|
+
ts.factory.createIdentifier(type),
|
|
74
|
+
);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const coalesce = (x: ts.Expression, y: ts.Expression): ts.Expression =>
|
|
78
|
+
ts.factory.createBinaryExpression(
|
|
79
|
+
x,
|
|
80
|
+
ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
|
|
81
|
+
y,
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
export const currying = (props: {
|
|
85
|
+
function: ts.Expression;
|
|
86
|
+
arguments: ts.Expression[];
|
|
87
|
+
}): ts.CallExpression => {
|
|
88
|
+
if (props.arguments.length === 0)
|
|
89
|
+
return ts.factory.createCallExpression(
|
|
90
|
+
props.function,
|
|
91
|
+
undefined,
|
|
92
|
+
undefined,
|
|
93
|
+
);
|
|
94
|
+
let prev: ts.CallExpression = ts.factory.createCallExpression(
|
|
95
|
+
props.function,
|
|
96
|
+
undefined,
|
|
97
|
+
[props.arguments[0]!],
|
|
98
|
+
);
|
|
99
|
+
for (const param of props.arguments.slice(1))
|
|
100
|
+
prev = ts.factory.createCallExpression(prev, undefined, [param]);
|
|
101
|
+
return prev;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export const selfCall = (body: ts.ConciseBody) =>
|
|
105
|
+
ts.isCallExpression(body)
|
|
106
|
+
? body
|
|
107
|
+
: ts.factory.createCallExpression(
|
|
108
|
+
ts.factory.createParenthesizedExpression(
|
|
109
|
+
ts.factory.createArrowFunction(
|
|
110
|
+
undefined,
|
|
111
|
+
undefined,
|
|
112
|
+
[],
|
|
113
|
+
undefined,
|
|
114
|
+
undefined,
|
|
115
|
+
body,
|
|
116
|
+
),
|
|
117
|
+
),
|
|
118
|
+
undefined,
|
|
119
|
+
undefined,
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
export const getEscapedText = (props: {
|
|
123
|
+
printer: ts.Printer;
|
|
124
|
+
input: ts.Expression;
|
|
125
|
+
}): string =>
|
|
126
|
+
props.printer.printNode(
|
|
127
|
+
ts.EmitHint.Expression,
|
|
128
|
+
props.input,
|
|
129
|
+
props.input.getSourceFile(),
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
export const transpile = (
|
|
133
|
+
transformer: ts.TransformationContext,
|
|
134
|
+
script: string,
|
|
135
|
+
) => {
|
|
136
|
+
const file: ts.SourceFile = ts.createSourceFile(
|
|
137
|
+
`${RandomGenerator.uuid()}.ts`,
|
|
138
|
+
script,
|
|
139
|
+
ts.ScriptTarget.ESNext,
|
|
140
|
+
true,
|
|
141
|
+
ts.ScriptKind.TS,
|
|
142
|
+
);
|
|
143
|
+
const statement: ts.Statement | undefined = file.statements[0];
|
|
144
|
+
if (statement === undefined)
|
|
145
|
+
throw new ReferenceError(
|
|
146
|
+
"Error on ExpressionFactory.transpile(): no statement exists.",
|
|
147
|
+
);
|
|
148
|
+
else if (!ts.isExpressionStatement(statement))
|
|
149
|
+
throw new TypeError(
|
|
150
|
+
"Error on ExpressionFactory.transpile(): statement is not an expression statement.",
|
|
151
|
+
);
|
|
152
|
+
return (input: ts.Expression): ts.Expression => {
|
|
153
|
+
const visitor = (node: ts.Node): ts.Node => {
|
|
154
|
+
if (ts.isIdentifier(node) && node.text === "$input") return input;
|
|
155
|
+
return ts.visitEachChild(
|
|
156
|
+
(ts.factory as any).cloneNode(node),
|
|
157
|
+
visitor,
|
|
158
|
+
transformer,
|
|
159
|
+
);
|
|
160
|
+
};
|
|
161
|
+
return visitor(statement.expression) as ts.Expression;
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
}
|