typia 13.0.0 → 13.0.1
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/TypeGuardError.mjs +42 -3
- package/lib/TypeGuardError.mjs.map +1 -1
- package/lib/_virtual/_rolldown/runtime.mjs +17 -0
- package/lib/compare.mjs +39 -3
- package/lib/compare.mjs.map +1 -1
- package/lib/executable/TypiaGenerateWizard.js +7 -2
- package/lib/executable/TypiaGenerateWizard.js.map +1 -1
- package/lib/executable/TypiaGenerateWizard.mjs +474 -3
- package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
- package/lib/executable/generate/ttsc.js +11 -8
- package/lib/executable/generate/ttsc.js.map +1 -1
- package/lib/executable/generate/ttsc.mjs +37 -3
- package/lib/executable/generate/ttsc.mjs.map +1 -1
- package/lib/executable/typia.js +10 -4
- package/lib/executable/typia.js.map +1 -1
- package/lib/executable/typia.mjs +59 -3
- package/lib/executable/typia.mjs.map +1 -1
- package/lib/functional.mjs +99 -3
- package/lib/functional.mjs.map +1 -1
- package/lib/http.mjs +139 -3
- package/lib/http.mjs.map +1 -1
- package/lib/index.mjs +18 -2
- package/lib/index.mjs.map +1 -1
- package/lib/internal/_IProtobufWriter.mjs +0 -3
- package/lib/internal/_ProtobufReader.js +7 -6
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +140 -3
- package/lib/internal/_ProtobufReader.mjs.map +1 -1
- package/lib/internal/_ProtobufSizer.mjs +84 -3
- package/lib/internal/_ProtobufSizer.mjs.map +1 -1
- package/lib/internal/_ProtobufWriter.mjs +94 -3
- package/lib/internal/_ProtobufWriter.mjs.map +1 -1
- package/lib/internal/_accessExpressionAsString.mjs +46 -3
- package/lib/internal/_accessExpressionAsString.mjs.map +1 -1
- package/lib/internal/_assertGuard.mjs +11 -3
- package/lib/internal/_assertGuard.mjs.map +1 -1
- package/lib/internal/_coerceLlmArguments.mjs +7 -3
- package/lib/internal/_coerceLlmArguments.mjs.map +1 -1
- package/lib/internal/_createStandardSchema.mjs +64 -3
- package/lib/internal/_createStandardSchema.mjs.map +1 -1
- package/lib/internal/_functionalTypeGuardErrorFactory.mjs +7 -3
- package/lib/internal/_functionalTypeGuardErrorFactory.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadArray.mjs +6 -3
- package/lib/internal/_httpFormDataReadArray.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBigint.mjs +13 -3
- package/lib/internal/_httpFormDataReadBigint.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBlob.mjs +6 -3
- package/lib/internal/_httpFormDataReadBlob.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBoolean.mjs +6 -3
- package/lib/internal/_httpFormDataReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadFile.mjs +6 -3
- package/lib/internal/_httpFormDataReadFile.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadNumber.mjs +10 -3
- package/lib/internal/_httpFormDataReadNumber.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadString.mjs +6 -3
- package/lib/internal/_httpFormDataReadString.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadBigint.mjs +13 -3
- package/lib/internal/_httpHeaderReadBigint.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadBoolean.mjs +6 -3
- package/lib/internal/_httpHeaderReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadNumber.mjs +10 -3
- package/lib/internal/_httpHeaderReadNumber.mjs.map +1 -1
- package/lib/internal/_httpParameterReadBigint.mjs +13 -3
- package/lib/internal/_httpParameterReadBigint.mjs.map +1 -1
- package/lib/internal/_httpParameterReadBoolean.mjs +6 -3
- package/lib/internal/_httpParameterReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpParameterReadNumber.mjs +10 -3
- package/lib/internal/_httpParameterReadNumber.mjs.map +1 -1
- package/lib/internal/_httpParameterReadString.mjs +6 -3
- package/lib/internal/_httpParameterReadString.mjs.map +1 -1
- package/lib/internal/_httpQueryParseURLSearchParams.mjs +13 -3
- package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
- package/lib/internal/_httpQueryReadArray.mjs +6 -3
- package/lib/internal/_httpQueryReadArray.mjs.map +1 -1
- package/lib/internal/_httpQueryReadBigint.mjs +13 -3
- package/lib/internal/_httpQueryReadBigint.mjs.map +1 -1
- package/lib/internal/_httpQueryReadBoolean.mjs +6 -3
- package/lib/internal/_httpQueryReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpQueryReadNumber.mjs +10 -3
- package/lib/internal/_httpQueryReadNumber.mjs.map +1 -1
- package/lib/internal/_httpQueryReadString.mjs +6 -3
- package/lib/internal/_httpQueryReadString.mjs.map +1 -1
- package/lib/internal/_isBetween.mjs +6 -3
- package/lib/internal/_isBetween.mjs.map +1 -1
- package/lib/internal/_isBigintString.mjs +13 -3
- package/lib/internal/_isBigintString.mjs.map +1 -1
- package/lib/internal/_isFormatByte.mjs +10 -3
- package/lib/internal/_isFormatByte.mjs.map +1 -1
- package/lib/internal/_isFormatDate.mjs +7 -3
- package/lib/internal/_isFormatDate.mjs.map +1 -1
- package/lib/internal/_isFormatDateTime.mjs +7 -3
- package/lib/internal/_isFormatDateTime.mjs.map +1 -1
- package/lib/internal/_isFormatDuration.mjs +7 -3
- package/lib/internal/_isFormatDuration.mjs.map +1 -1
- package/lib/internal/_isFormatEmail.mjs +7 -3
- package/lib/internal/_isFormatEmail.mjs.map +1 -1
- package/lib/internal/_isFormatHostname.mjs +7 -3
- package/lib/internal/_isFormatHostname.mjs.map +1 -1
- package/lib/internal/_isFormatIdnEmail.mjs +7 -3
- package/lib/internal/_isFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_isFormatIdnHostname.mjs +7 -3
- package/lib/internal/_isFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_isFormatIpv4.mjs +7 -3
- package/lib/internal/_isFormatIpv4.mjs.map +1 -1
- package/lib/internal/_isFormatIpv6.mjs +7 -3
- package/lib/internal/_isFormatIpv6.mjs.map +1 -1
- package/lib/internal/_isFormatIri.mjs +7 -3
- package/lib/internal/_isFormatIri.mjs.map +1 -1
- package/lib/internal/_isFormatIriReference.mjs +7 -3
- package/lib/internal/_isFormatIriReference.mjs.map +1 -1
- package/lib/internal/_isFormatJsonPointer.mjs +7 -3
- package/lib/internal/_isFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_isFormatPassword.mjs +6 -3
- package/lib/internal/_isFormatPassword.mjs.map +1 -1
- package/lib/internal/_isFormatRegex.mjs +13 -3
- package/lib/internal/_isFormatRegex.mjs.map +1 -1
- package/lib/internal/_isFormatRelativeJsonPointer.mjs +7 -3
- package/lib/internal/_isFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_isFormatTime.mjs +7 -3
- package/lib/internal/_isFormatTime.mjs.map +1 -1
- package/lib/internal/_isFormatUri.mjs +8 -3
- package/lib/internal/_isFormatUri.mjs.map +1 -1
- package/lib/internal/_isFormatUriReference.mjs +7 -3
- package/lib/internal/_isFormatUriReference.mjs.map +1 -1
- package/lib/internal/_isFormatUriTemplate.mjs +7 -3
- package/lib/internal/_isFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_isFormatUrl.mjs +7 -3
- package/lib/internal/_isFormatUrl.mjs.map +1 -1
- package/lib/internal/_isFormatUuid.mjs +7 -3
- package/lib/internal/_isFormatUuid.mjs.map +1 -1
- package/lib/internal/_isTypeFloat.mjs +8 -3
- package/lib/internal/_isTypeFloat.mjs.map +1 -1
- package/lib/internal/_isTypeInt16.mjs +8 -3
- package/lib/internal/_isTypeInt16.mjs.map +1 -1
- package/lib/internal/_isTypeInt32.mjs +8 -3
- package/lib/internal/_isTypeInt32.mjs.map +1 -1
- package/lib/internal/_isTypeInt64.mjs +8 -3
- package/lib/internal/_isTypeInt64.mjs.map +1 -1
- package/lib/internal/_isTypeInt8.mjs +8 -3
- package/lib/internal/_isTypeInt8.mjs.map +1 -1
- package/lib/internal/_isTypeUint16.mjs +8 -3
- package/lib/internal/_isTypeUint16.mjs.map +1 -1
- package/lib/internal/_isTypeUint32.mjs +8 -3
- package/lib/internal/_isTypeUint32.mjs.map +1 -1
- package/lib/internal/_isTypeUint64.mjs +8 -3
- package/lib/internal/_isTypeUint64.mjs.map +1 -1
- package/lib/internal/_isTypeUint8.mjs +8 -3
- package/lib/internal/_isTypeUint8.mjs.map +1 -1
- package/lib/internal/_isUniqueItems.mjs +67 -3
- package/lib/internal/_isUniqueItems.mjs.map +1 -1
- package/lib/internal/_jsonStringifyNumber.mjs +6 -3
- package/lib/internal/_jsonStringifyNumber.mjs.map +1 -1
- package/lib/internal/_jsonStringifyRest.mjs +8 -3
- package/lib/internal/_jsonStringifyRest.mjs.map +1 -1
- package/lib/internal/_jsonStringifyString.mjs +34 -3
- package/lib/internal/_jsonStringifyString.mjs.map +1 -1
- package/lib/internal/_jsonStringifyTail.mjs +6 -3
- package/lib/internal/_jsonStringifyTail.mjs.map +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs +19 -3
- package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
- package/lib/internal/_notationAny.mjs +18 -3
- package/lib/internal/_notationAny.mjs.map +1 -1
- package/lib/internal/_notationCamel.mjs +11 -3
- package/lib/internal/_notationCamel.mjs.map +1 -1
- package/lib/internal/_notationPascal.mjs +11 -3
- package/lib/internal/_notationPascal.mjs.map +1 -1
- package/lib/internal/_notationSnake.mjs +32 -3
- package/lib/internal/_notationSnake.mjs.map +1 -1
- package/lib/internal/_parseLlmArguments.mjs +7 -3
- package/lib/internal/_parseLlmArguments.mjs.map +1 -1
- package/lib/internal/_plainCloneAny.mjs +35 -3
- package/lib/internal/_plainCloneAny.mjs.map +1 -1
- package/lib/internal/_randomArray.mjs +22 -3
- package/lib/internal/_randomArray.mjs.map +1 -1
- package/lib/internal/_randomBigint.mjs +7 -3
- package/lib/internal/_randomBigint.mjs.map +1 -1
- package/lib/internal/_randomBoolean.mjs +6 -3
- package/lib/internal/_randomBoolean.mjs.map +1 -1
- package/lib/internal/_randomFormatByte.mjs +7 -3
- package/lib/internal/_randomFormatByte.mjs.map +1 -1
- package/lib/internal/_randomFormatDate.mjs +11 -3
- package/lib/internal/_randomFormatDate.mjs.map +1 -1
- package/lib/internal/_randomFormatDatetime.mjs +11 -3
- package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
- package/lib/internal/_randomFormatDuration.mjs +26 -3
- package/lib/internal/_randomFormatDuration.mjs.map +1 -1
- package/lib/internal/_randomFormatEmail.mjs +12 -3
- package/lib/internal/_randomFormatEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatHostname.mjs +12 -3
- package/lib/internal/_randomFormatHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.mjs +7 -3
- package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.mjs +7 -3
- package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv4.mjs +12 -3
- package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv6.mjs +12 -3
- package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
- package/lib/internal/_randomFormatIri.mjs +7 -3
- package/lib/internal/_randomFormatIri.mjs.map +1 -1
- package/lib/internal/_randomFormatIriReference.mjs +7 -3
- package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.mjs +12 -3
- package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatPassword.mjs +11 -3
- package/lib/internal/_randomFormatPassword.mjs.map +1 -1
- package/lib/internal/_randomFormatRegex.mjs +7 -3
- package/lib/internal/_randomFormatRegex.mjs.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs +11 -3
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatTime.mjs +12 -3
- package/lib/internal/_randomFormatTime.mjs.map +1 -1
- package/lib/internal/_randomFormatUri.mjs +7 -3
- package/lib/internal/_randomFormatUri.mjs.map +1 -1
- package/lib/internal/_randomFormatUriReference.mjs +7 -3
- package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs +7 -3
- package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_randomFormatUrl.mjs +12 -3
- package/lib/internal/_randomFormatUrl.mjs.map +1 -1
- package/lib/internal/_randomFormatUuid.mjs +9 -3
- package/lib/internal/_randomFormatUuid.mjs.map +1 -1
- package/lib/internal/_randomInteger.mjs +31 -3
- package/lib/internal/_randomInteger.mjs.map +1 -1
- package/lib/internal/_randomNumber.mjs +45 -3
- package/lib/internal/_randomNumber.mjs.map +1 -1
- package/lib/internal/_randomPattern.mjs +14 -3
- package/lib/internal/_randomPattern.mjs.map +1 -1
- package/lib/internal/_randomPick.mjs +12 -3
- package/lib/internal/_randomPick.mjs.map +1 -1
- package/lib/internal/_randomString.mjs +23 -3
- package/lib/internal/_randomString.mjs.map +1 -1
- package/lib/internal/_throwTypeGuardError.mjs +9 -3
- package/lib/internal/_throwTypeGuardError.mjs.map +1 -1
- package/lib/internal/_validateReport.mjs +23 -3
- package/lib/internal/_validateReport.mjs.map +1 -1
- package/lib/internal/private/__notationCapitalize.mjs +6 -3
- package/lib/internal/private/__notationCapitalize.mjs.map +1 -1
- package/lib/internal/private/__notationUnsnake.mjs +15 -3
- package/lib/internal/private/__notationUnsnake.mjs.map +1 -1
- package/lib/json.mjs +94 -3
- package/lib/json.mjs.map +1 -1
- package/lib/llm.mjs +54 -3
- package/lib/llm.mjs.map +1 -1
- package/lib/module.mjs +131 -2
- package/lib/module.mjs.map +1 -1
- package/lib/notations.mjs +169 -3
- package/lib/notations.mjs.map +1 -1
- package/lib/plain.mjs +119 -3
- package/lib/plain.mjs.map +1 -1
- package/lib/protobuf.mjs +94 -3
- package/lib/protobuf.mjs.map +1 -1
- package/lib/re-exports.d.ts +2 -1
- package/lib/re-exports.js +5 -1
- package/lib/re-exports.js.map +1 -1
- package/lib/re-exports.mjs +2 -2
- package/lib/reflect.mjs +29 -3
- package/lib/reflect.mjs.map +1 -1
- package/lib/transform.mjs +15 -2
- package/lib/transform.mjs.map +1 -1
- package/lib/transformers/NoTransformConfigurationError.mjs +19 -3
- package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -1
- package/native/core/factories/LiteralFactory.go +37 -0
- package/native/core/factories/literal_factory_ordered_object_marshals_json_test.go +40 -0
- package/package.json +6 -13
- package/src/executable/TypiaGenerateWizard.ts +5 -1
- package/src/executable/generate/ttsc.ts +3 -4
- package/src/executable/typia.ts +8 -4
- package/src/re-exports.ts +8 -3
- package/lib/TypeGuardError2.mjs +0 -55
- package/lib/TypeGuardError2.mjs.map +0 -1
- package/lib/_virtual/NoTransformConfigurationError.mjs +0 -4
- package/lib/_virtual/NoTransformConfigurationError.mjs.map +0 -1
- package/lib/_virtual/TypeGuardError.mjs +0 -4
- package/lib/_virtual/TypeGuardError.mjs.map +0 -1
- package/lib/_virtual/TypiaGenerateWizard.mjs +0 -4
- package/lib/_virtual/TypiaGenerateWizard.mjs.map +0 -1
- package/lib/_virtual/_IProtobufWriter.mjs +0 -4
- package/lib/_virtual/_IProtobufWriter.mjs.map +0 -1
- package/lib/_virtual/_ProtobufReader.mjs +0 -4
- package/lib/_virtual/_ProtobufReader.mjs.map +0 -1
- package/lib/_virtual/_ProtobufSizer.mjs +0 -4
- package/lib/_virtual/_ProtobufSizer.mjs.map +0 -1
- package/lib/_virtual/_ProtobufWriter.mjs +0 -4
- package/lib/_virtual/_ProtobufWriter.mjs.map +0 -1
- package/lib/_virtual/__notationCapitalize.mjs +0 -4
- package/lib/_virtual/__notationCapitalize.mjs.map +0 -1
- package/lib/_virtual/__notationUnsnake.mjs +0 -4
- package/lib/_virtual/__notationUnsnake.mjs.map +0 -1
- package/lib/_virtual/_accessExpressionAsString.mjs +0 -4
- package/lib/_virtual/_accessExpressionAsString.mjs.map +0 -1
- package/lib/_virtual/_assertGuard.mjs +0 -4
- package/lib/_virtual/_assertGuard.mjs.map +0 -1
- package/lib/_virtual/_coerceLlmArguments.mjs +0 -4
- package/lib/_virtual/_coerceLlmArguments.mjs.map +0 -1
- package/lib/_virtual/_commander.mjs +0 -7
- package/lib/_virtual/_commander.mjs.map +0 -1
- package/lib/_virtual/_commonjsHelpers.mjs +0 -35
- package/lib/_virtual/_commonjsHelpers.mjs.map +0 -1
- package/lib/_virtual/_createStandardSchema.mjs +0 -4
- package/lib/_virtual/_createStandardSchema.mjs.map +0 -1
- package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs +0 -4
- package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadArray.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadArray.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadBigint.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadBlob.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadBlob.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadFile.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadFile.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadNumber.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadString.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadString.mjs.map +0 -1
- package/lib/_virtual/_httpHeaderReadBigint.mjs +0 -4
- package/lib/_virtual/_httpHeaderReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpHeaderReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpHeaderReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpHeaderReadNumber.mjs +0 -4
- package/lib/_virtual/_httpHeaderReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadBigint.mjs +0 -4
- package/lib/_virtual/_httpParameterReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpParameterReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadNumber.mjs +0 -4
- package/lib/_virtual/_httpParameterReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadString.mjs +0 -4
- package/lib/_virtual/_httpParameterReadString.mjs.map +0 -1
- package/lib/_virtual/_httpQueryParseURLSearchParams.mjs +0 -4
- package/lib/_virtual/_httpQueryParseURLSearchParams.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadArray.mjs +0 -4
- package/lib/_virtual/_httpQueryReadArray.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadBigint.mjs +0 -4
- package/lib/_virtual/_httpQueryReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpQueryReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadNumber.mjs +0 -4
- package/lib/_virtual/_httpQueryReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadString.mjs +0 -4
- package/lib/_virtual/_httpQueryReadString.mjs.map +0 -1
- package/lib/_virtual/_inquirer.mjs +0 -7
- package/lib/_virtual/_inquirer.mjs.map +0 -1
- package/lib/_virtual/_isBetween.mjs +0 -4
- package/lib/_virtual/_isBetween.mjs.map +0 -1
- package/lib/_virtual/_isBigintString.mjs +0 -4
- package/lib/_virtual/_isBigintString.mjs.map +0 -1
- package/lib/_virtual/_isFormatByte.mjs +0 -4
- package/lib/_virtual/_isFormatByte.mjs.map +0 -1
- package/lib/_virtual/_isFormatDate.mjs +0 -4
- package/lib/_virtual/_isFormatDate.mjs.map +0 -1
- package/lib/_virtual/_isFormatDateTime.mjs +0 -4
- package/lib/_virtual/_isFormatDateTime.mjs.map +0 -1
- package/lib/_virtual/_isFormatDuration.mjs +0 -4
- package/lib/_virtual/_isFormatDuration.mjs.map +0 -1
- package/lib/_virtual/_isFormatEmail.mjs +0 -4
- package/lib/_virtual/_isFormatEmail.mjs.map +0 -1
- package/lib/_virtual/_isFormatHostname.mjs +0 -4
- package/lib/_virtual/_isFormatHostname.mjs.map +0 -1
- package/lib/_virtual/_isFormatIdnEmail.mjs +0 -4
- package/lib/_virtual/_isFormatIdnEmail.mjs.map +0 -1
- package/lib/_virtual/_isFormatIdnHostname.mjs +0 -4
- package/lib/_virtual/_isFormatIdnHostname.mjs.map +0 -1
- package/lib/_virtual/_isFormatIpv4.mjs +0 -4
- package/lib/_virtual/_isFormatIpv4.mjs.map +0 -1
- package/lib/_virtual/_isFormatIpv6.mjs +0 -4
- package/lib/_virtual/_isFormatIpv6.mjs.map +0 -1
- package/lib/_virtual/_isFormatIri.mjs +0 -4
- package/lib/_virtual/_isFormatIri.mjs.map +0 -1
- package/lib/_virtual/_isFormatIriReference.mjs +0 -4
- package/lib/_virtual/_isFormatIriReference.mjs.map +0 -1
- package/lib/_virtual/_isFormatJsonPointer.mjs +0 -4
- package/lib/_virtual/_isFormatJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_isFormatPassword.mjs +0 -4
- package/lib/_virtual/_isFormatPassword.mjs.map +0 -1
- package/lib/_virtual/_isFormatRegex.mjs +0 -4
- package/lib/_virtual/_isFormatRegex.mjs.map +0 -1
- package/lib/_virtual/_isFormatRelativeJsonPointer.mjs +0 -4
- package/lib/_virtual/_isFormatRelativeJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_isFormatTime.mjs +0 -4
- package/lib/_virtual/_isFormatTime.mjs.map +0 -1
- package/lib/_virtual/_isFormatUri.mjs +0 -4
- package/lib/_virtual/_isFormatUri.mjs.map +0 -1
- package/lib/_virtual/_isFormatUriReference.mjs +0 -4
- package/lib/_virtual/_isFormatUriReference.mjs.map +0 -1
- package/lib/_virtual/_isFormatUriTemplate.mjs +0 -4
- package/lib/_virtual/_isFormatUriTemplate.mjs.map +0 -1
- package/lib/_virtual/_isFormatUrl.mjs +0 -4
- package/lib/_virtual/_isFormatUrl.mjs.map +0 -1
- package/lib/_virtual/_isFormatUuid.mjs +0 -4
- package/lib/_virtual/_isFormatUuid.mjs.map +0 -1
- package/lib/_virtual/_isTypeFloat.mjs +0 -4
- package/lib/_virtual/_isTypeFloat.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt16.mjs +0 -4
- package/lib/_virtual/_isTypeInt16.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt32.mjs +0 -4
- package/lib/_virtual/_isTypeInt32.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt64.mjs +0 -4
- package/lib/_virtual/_isTypeInt64.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt8.mjs +0 -4
- package/lib/_virtual/_isTypeInt8.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint16.mjs +0 -4
- package/lib/_virtual/_isTypeUint16.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint32.mjs +0 -4
- package/lib/_virtual/_isTypeUint32.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint64.mjs +0 -4
- package/lib/_virtual/_isTypeUint64.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint8.mjs +0 -4
- package/lib/_virtual/_isTypeUint8.mjs.map +0 -1
- package/lib/_virtual/_isUniqueItems.mjs +0 -4
- package/lib/_virtual/_isUniqueItems.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyNumber.mjs +0 -4
- package/lib/_virtual/_jsonStringifyNumber.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyRest.mjs +0 -4
- package/lib/_virtual/_jsonStringifyRest.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyString.mjs +0 -4
- package/lib/_virtual/_jsonStringifyString.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyTail.mjs +0 -4
- package/lib/_virtual/_jsonStringifyTail.mjs.map +0 -1
- package/lib/_virtual/_llmApplicationFinalize.mjs +0 -4
- package/lib/_virtual/_llmApplicationFinalize.mjs.map +0 -1
- package/lib/_virtual/_node_child_process.mjs +0 -7
- package/lib/_virtual/_node_child_process.mjs.map +0 -1
- package/lib/_virtual/_node_fs.mjs +0 -7
- package/lib/_virtual/_node_fs.mjs.map +0 -1
- package/lib/_virtual/_node_module.mjs +0 -7
- package/lib/_virtual/_node_module.mjs.map +0 -1
- package/lib/_virtual/_node_path.mjs +0 -7
- package/lib/_virtual/_node_path.mjs.map +0 -1
- package/lib/_virtual/_notationAny.mjs +0 -4
- package/lib/_virtual/_notationAny.mjs.map +0 -1
- package/lib/_virtual/_notationCamel.mjs +0 -4
- package/lib/_virtual/_notationCamel.mjs.map +0 -1
- package/lib/_virtual/_notationPascal.mjs +0 -4
- package/lib/_virtual/_notationPascal.mjs.map +0 -1
- package/lib/_virtual/_notationSnake.mjs +0 -4
- package/lib/_virtual/_notationSnake.mjs.map +0 -1
- package/lib/_virtual/_parseLlmArguments.mjs +0 -4
- package/lib/_virtual/_parseLlmArguments.mjs.map +0 -1
- package/lib/_virtual/_plainCloneAny.mjs +0 -4
- package/lib/_virtual/_plainCloneAny.mjs.map +0 -1
- package/lib/_virtual/_randexp.mjs +0 -7
- package/lib/_virtual/_randexp.mjs.map +0 -1
- package/lib/_virtual/_randomArray.mjs +0 -4
- package/lib/_virtual/_randomArray.mjs.map +0 -1
- package/lib/_virtual/_randomBigint.mjs +0 -4
- package/lib/_virtual/_randomBigint.mjs.map +0 -1
- package/lib/_virtual/_randomBoolean.mjs +0 -4
- package/lib/_virtual/_randomBoolean.mjs.map +0 -1
- package/lib/_virtual/_randomFormatByte.mjs +0 -4
- package/lib/_virtual/_randomFormatByte.mjs.map +0 -1
- package/lib/_virtual/_randomFormatDate.mjs +0 -4
- package/lib/_virtual/_randomFormatDate.mjs.map +0 -1
- package/lib/_virtual/_randomFormatDatetime.mjs +0 -4
- package/lib/_virtual/_randomFormatDatetime.mjs.map +0 -1
- package/lib/_virtual/_randomFormatDuration.mjs +0 -4
- package/lib/_virtual/_randomFormatDuration.mjs.map +0 -1
- package/lib/_virtual/_randomFormatEmail.mjs +0 -4
- package/lib/_virtual/_randomFormatEmail.mjs.map +0 -1
- package/lib/_virtual/_randomFormatHostname.mjs +0 -4
- package/lib/_virtual/_randomFormatHostname.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIdnEmail.mjs +0 -4
- package/lib/_virtual/_randomFormatIdnEmail.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIdnHostname.mjs +0 -4
- package/lib/_virtual/_randomFormatIdnHostname.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIpv4.mjs +0 -4
- package/lib/_virtual/_randomFormatIpv4.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIpv6.mjs +0 -4
- package/lib/_virtual/_randomFormatIpv6.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIri.mjs +0 -4
- package/lib/_virtual/_randomFormatIri.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIriReference.mjs +0 -4
- package/lib/_virtual/_randomFormatIriReference.mjs.map +0 -1
- package/lib/_virtual/_randomFormatJsonPointer.mjs +0 -4
- package/lib/_virtual/_randomFormatJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_randomFormatPassword.mjs +0 -4
- package/lib/_virtual/_randomFormatPassword.mjs.map +0 -1
- package/lib/_virtual/_randomFormatRegex.mjs +0 -4
- package/lib/_virtual/_randomFormatRegex.mjs.map +0 -1
- package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs +0 -4
- package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_randomFormatTime.mjs +0 -4
- package/lib/_virtual/_randomFormatTime.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUri.mjs +0 -4
- package/lib/_virtual/_randomFormatUri.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUriReference.mjs +0 -4
- package/lib/_virtual/_randomFormatUriReference.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUriTemplate.mjs +0 -4
- package/lib/_virtual/_randomFormatUriTemplate.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUrl.mjs +0 -4
- package/lib/_virtual/_randomFormatUrl.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUuid.mjs +0 -4
- package/lib/_virtual/_randomFormatUuid.mjs.map +0 -1
- package/lib/_virtual/_randomInteger.mjs +0 -4
- package/lib/_virtual/_randomInteger.mjs.map +0 -1
- package/lib/_virtual/_randomNumber.mjs +0 -4
- package/lib/_virtual/_randomNumber.mjs.map +0 -1
- package/lib/_virtual/_randomPattern.mjs +0 -4
- package/lib/_virtual/_randomPattern.mjs.map +0 -1
- package/lib/_virtual/_randomPick.mjs +0 -4
- package/lib/_virtual/_randomPick.mjs.map +0 -1
- package/lib/_virtual/_randomString.mjs +0 -4
- package/lib/_virtual/_randomString.mjs.map +0 -1
- package/lib/_virtual/_throwTypeGuardError.mjs +0 -4
- package/lib/_virtual/_throwTypeGuardError.mjs.map +0 -1
- package/lib/_virtual/_tinyglobby.mjs +0 -7
- package/lib/_virtual/_tinyglobby.mjs.map +0 -1
- package/lib/_virtual/_validateReport.mjs +0 -4
- package/lib/_virtual/_validateReport.mjs.map +0 -1
- package/lib/_virtual/compare.mjs +0 -4
- package/lib/_virtual/compare.mjs.map +0 -1
- package/lib/_virtual/functional.mjs +0 -4
- package/lib/_virtual/functional.mjs.map +0 -1
- package/lib/_virtual/http.mjs +0 -4
- package/lib/_virtual/http.mjs.map +0 -1
- package/lib/_virtual/index.mjs +0 -4
- package/lib/_virtual/index.mjs.map +0 -1
- package/lib/_virtual/json.mjs +0 -4
- package/lib/_virtual/json.mjs.map +0 -1
- package/lib/_virtual/llm.mjs +0 -4
- package/lib/_virtual/llm.mjs.map +0 -1
- package/lib/_virtual/module.mjs +0 -4
- package/lib/_virtual/module.mjs.map +0 -1
- package/lib/_virtual/notations.mjs +0 -4
- package/lib/_virtual/notations.mjs.map +0 -1
- package/lib/_virtual/plain.mjs +0 -4
- package/lib/_virtual/plain.mjs.map +0 -1
- package/lib/_virtual/protobuf.mjs +0 -4
- package/lib/_virtual/protobuf.mjs.map +0 -1
- package/lib/_virtual/re-exports.mjs +0 -4
- package/lib/_virtual/re-exports.mjs.map +0 -1
- package/lib/_virtual/reflect.mjs +0 -4
- package/lib/_virtual/reflect.mjs.map +0 -1
- package/lib/_virtual/transform.mjs +0 -4
- package/lib/_virtual/transform.mjs.map +0 -1
- package/lib/_virtual/ttsc.mjs +0 -4
- package/lib/_virtual/ttsc.mjs.map +0 -1
- package/lib/_virtual/typia.mjs +0 -4
- package/lib/_virtual/typia.mjs.map +0 -1
- package/lib/compare2.mjs +0 -39
- package/lib/compare2.mjs.map +0 -1
- package/lib/executable/TypiaGenerateWizard2.mjs +0 -719
- package/lib/executable/TypiaGenerateWizard2.mjs.map +0 -1
- package/lib/executable/generate/ttsc2.mjs +0 -56
- package/lib/executable/generate/ttsc2.mjs.map +0 -1
- package/lib/executable/typia2.mjs +0 -88
- package/lib/executable/typia2.mjs.map +0 -1
- package/lib/functional2.mjs +0 -99
- package/lib/functional2.mjs.map +0 -1
- package/lib/http2.mjs +0 -139
- package/lib/http2.mjs.map +0 -1
- package/lib/index2.mjs +0 -53
- package/lib/index2.mjs.map +0 -1
- package/lib/internal/_IProtobufWriter.mjs.map +0 -1
- package/lib/internal/_IProtobufWriter2.mjs +0 -6
- package/lib/internal/_IProtobufWriter2.mjs.map +0 -1
- package/lib/internal/_ProtobufReader2.mjs +0 -169
- package/lib/internal/_ProtobufReader2.mjs.map +0 -1
- package/lib/internal/_ProtobufSizer2.mjs +0 -119
- package/lib/internal/_ProtobufSizer2.mjs.map +0 -1
- package/lib/internal/_ProtobufWriter2.mjs +0 -107
- package/lib/internal/_ProtobufWriter2.mjs.map +0 -1
- package/lib/internal/_accessExpressionAsString2.mjs +0 -49
- package/lib/internal/_accessExpressionAsString2.mjs.map +0 -1
- package/lib/internal/_assertGuard2.mjs +0 -20
- package/lib/internal/_assertGuard2.mjs.map +0 -1
- package/lib/internal/_coerceLlmArguments2.mjs +0 -11
- package/lib/internal/_coerceLlmArguments2.mjs.map +0 -1
- package/lib/internal/_createStandardSchema2.mjs +0 -138
- package/lib/internal/_createStandardSchema2.mjs.map +0 -1
- package/lib/internal/_functionalTypeGuardErrorFactory2.mjs +0 -12
- package/lib/internal/_functionalTypeGuardErrorFactory2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadArray2.mjs +0 -9
- package/lib/internal/_httpFormDataReadArray2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadBigint2.mjs +0 -23
- package/lib/internal/_httpFormDataReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadBlob2.mjs +0 -15
- package/lib/internal/_httpFormDataReadBlob2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadBoolean2.mjs +0 -21
- package/lib/internal/_httpFormDataReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadFile2.mjs +0 -15
- package/lib/internal/_httpFormDataReadFile2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadNumber2.mjs +0 -19
- package/lib/internal/_httpFormDataReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadString2.mjs +0 -15
- package/lib/internal/_httpFormDataReadString2.mjs.map +0 -1
- package/lib/internal/_httpHeaderReadBigint2.mjs +0 -17
- package/lib/internal/_httpHeaderReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpHeaderReadBoolean2.mjs +0 -15
- package/lib/internal/_httpHeaderReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpHeaderReadNumber2.mjs +0 -13
- package/lib/internal/_httpHeaderReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadBigint2.mjs +0 -17
- package/lib/internal/_httpParameterReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadBoolean2.mjs +0 -15
- package/lib/internal/_httpParameterReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadNumber2.mjs +0 -13
- package/lib/internal/_httpParameterReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadString2.mjs +0 -9
- package/lib/internal/_httpParameterReadString2.mjs.map +0 -1
- package/lib/internal/_httpQueryParseURLSearchParams2.mjs +0 -16
- package/lib/internal/_httpQueryParseURLSearchParams2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadArray2.mjs +0 -9
- package/lib/internal/_httpQueryReadArray2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadBigint2.mjs +0 -17
- package/lib/internal/_httpQueryReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadBoolean2.mjs +0 -19
- package/lib/internal/_httpQueryReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadNumber2.mjs +0 -13
- package/lib/internal/_httpQueryReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadString2.mjs +0 -9
- package/lib/internal/_httpQueryReadString2.mjs.map +0 -1
- package/lib/internal/_isBetween2.mjs +0 -9
- package/lib/internal/_isBetween2.mjs.map +0 -1
- package/lib/internal/_isBigintString2.mjs +0 -17
- package/lib/internal/_isBigintString2.mjs.map +0 -1
- package/lib/internal/_isFormatByte2.mjs +0 -13
- package/lib/internal/_isFormatByte2.mjs.map +0 -1
- package/lib/internal/_isFormatDate2.mjs +0 -10
- package/lib/internal/_isFormatDate2.mjs.map +0 -1
- package/lib/internal/_isFormatDateTime2.mjs +0 -10
- package/lib/internal/_isFormatDateTime2.mjs.map +0 -1
- package/lib/internal/_isFormatDuration2.mjs +0 -10
- package/lib/internal/_isFormatDuration2.mjs.map +0 -1
- package/lib/internal/_isFormatEmail2.mjs +0 -10
- package/lib/internal/_isFormatEmail2.mjs.map +0 -1
- package/lib/internal/_isFormatHostname2.mjs +0 -10
- package/lib/internal/_isFormatHostname2.mjs.map +0 -1
- package/lib/internal/_isFormatIdnEmail2.mjs +0 -10
- package/lib/internal/_isFormatIdnEmail2.mjs.map +0 -1
- package/lib/internal/_isFormatIdnHostname2.mjs +0 -10
- package/lib/internal/_isFormatIdnHostname2.mjs.map +0 -1
- package/lib/internal/_isFormatIpv42.mjs +0 -10
- package/lib/internal/_isFormatIpv42.mjs.map +0 -1
- package/lib/internal/_isFormatIpv62.mjs +0 -10
- package/lib/internal/_isFormatIpv62.mjs.map +0 -1
- package/lib/internal/_isFormatIri2.mjs +0 -10
- package/lib/internal/_isFormatIri2.mjs.map +0 -1
- package/lib/internal/_isFormatIriReference2.mjs +0 -10
- package/lib/internal/_isFormatIriReference2.mjs.map +0 -1
- package/lib/internal/_isFormatJsonPointer2.mjs +0 -10
- package/lib/internal/_isFormatJsonPointer2.mjs.map +0 -1
- package/lib/internal/_isFormatPassword2.mjs +0 -9
- package/lib/internal/_isFormatPassword2.mjs.map +0 -1
- package/lib/internal/_isFormatRegex2.mjs +0 -17
- package/lib/internal/_isFormatRegex2.mjs.map +0 -1
- package/lib/internal/_isFormatRelativeJsonPointer2.mjs +0 -10
- package/lib/internal/_isFormatRelativeJsonPointer2.mjs.map +0 -1
- package/lib/internal/_isFormatTime2.mjs +0 -10
- package/lib/internal/_isFormatTime2.mjs.map +0 -1
- package/lib/internal/_isFormatUri2.mjs +0 -11
- package/lib/internal/_isFormatUri2.mjs.map +0 -1
- package/lib/internal/_isFormatUriReference2.mjs +0 -10
- package/lib/internal/_isFormatUriReference2.mjs.map +0 -1
- package/lib/internal/_isFormatUriTemplate2.mjs +0 -10
- package/lib/internal/_isFormatUriTemplate2.mjs.map +0 -1
- package/lib/internal/_isFormatUrl2.mjs +0 -10
- package/lib/internal/_isFormatUrl2.mjs.map +0 -1
- package/lib/internal/_isFormatUuid2.mjs +0 -10
- package/lib/internal/_isFormatUuid2.mjs.map +0 -1
- package/lib/internal/_isTypeFloat2.mjs +0 -11
- package/lib/internal/_isTypeFloat2.mjs.map +0 -1
- package/lib/internal/_isTypeInt162.mjs +0 -11
- package/lib/internal/_isTypeInt162.mjs.map +0 -1
- package/lib/internal/_isTypeInt322.mjs +0 -11
- package/lib/internal/_isTypeInt322.mjs.map +0 -1
- package/lib/internal/_isTypeInt642.mjs +0 -11
- package/lib/internal/_isTypeInt642.mjs.map +0 -1
- package/lib/internal/_isTypeInt82.mjs +0 -11
- package/lib/internal/_isTypeInt82.mjs.map +0 -1
- package/lib/internal/_isTypeUint162.mjs +0 -11
- package/lib/internal/_isTypeUint162.mjs.map +0 -1
- package/lib/internal/_isTypeUint322.mjs +0 -11
- package/lib/internal/_isTypeUint322.mjs.map +0 -1
- package/lib/internal/_isTypeUint642.mjs +0 -11
- package/lib/internal/_isTypeUint642.mjs.map +0 -1
- package/lib/internal/_isTypeUint82.mjs +0 -11
- package/lib/internal/_isTypeUint82.mjs.map +0 -1
- package/lib/internal/_isUniqueItems2.mjs +0 -143
- package/lib/internal/_isUniqueItems2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyNumber2.mjs +0 -9
- package/lib/internal/_jsonStringifyNumber2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyRest2.mjs +0 -11
- package/lib/internal/_jsonStringifyRest2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyString2.mjs +0 -45
- package/lib/internal/_jsonStringifyString2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyTail2.mjs +0 -9
- package/lib/internal/_jsonStringifyTail2.mjs.map +0 -1
- package/lib/internal/_llmApplicationFinalize2.mjs +0 -11
- package/lib/internal/_llmApplicationFinalize2.mjs.map +0 -1
- package/lib/internal/_notationAny2.mjs +0 -42
- package/lib/internal/_notationAny2.mjs.map +0 -1
- package/lib/internal/_notationCamel2.mjs +0 -21
- package/lib/internal/_notationCamel2.mjs.map +0 -1
- package/lib/internal/_notationPascal2.mjs +0 -17
- package/lib/internal/_notationPascal2.mjs.map +0 -1
- package/lib/internal/_notationSnake2.mjs +0 -54
- package/lib/internal/_notationSnake2.mjs.map +0 -1
- package/lib/internal/_parseLlmArguments2.mjs +0 -11
- package/lib/internal/_parseLlmArguments2.mjs.map +0 -1
- package/lib/internal/_plainCloneAny2.mjs +0 -67
- package/lib/internal/_plainCloneAny2.mjs.map +0 -1
- package/lib/internal/_randomArray2.mjs +0 -31
- package/lib/internal/_randomArray2.mjs.map +0 -1
- package/lib/internal/_randomBigint2.mjs +0 -12
- package/lib/internal/_randomBigint2.mjs.map +0 -1
- package/lib/internal/_randomBoolean2.mjs +0 -9
- package/lib/internal/_randomBoolean2.mjs.map +0 -1
- package/lib/internal/_randomFormatByte2.mjs +0 -10
- package/lib/internal/_randomFormatByte2.mjs.map +0 -1
- package/lib/internal/_randomFormatDate2.mjs +0 -20
- package/lib/internal/_randomFormatDate2.mjs.map +0 -1
- package/lib/internal/_randomFormatDatetime2.mjs +0 -18
- package/lib/internal/_randomFormatDatetime2.mjs.map +0 -1
- package/lib/internal/_randomFormatDuration2.mjs +0 -35
- package/lib/internal/_randomFormatDuration2.mjs.map +0 -1
- package/lib/internal/_randomFormatEmail2.mjs +0 -17
- package/lib/internal/_randomFormatEmail2.mjs.map +0 -1
- package/lib/internal/_randomFormatHostname2.mjs +0 -13
- package/lib/internal/_randomFormatHostname2.mjs.map +0 -1
- package/lib/internal/_randomFormatIdnEmail2.mjs +0 -12
- package/lib/internal/_randomFormatIdnEmail2.mjs.map +0 -1
- package/lib/internal/_randomFormatIdnHostname2.mjs +0 -12
- package/lib/internal/_randomFormatIdnHostname2.mjs.map +0 -1
- package/lib/internal/_randomFormatIpv42.mjs +0 -17
- package/lib/internal/_randomFormatIpv42.mjs.map +0 -1
- package/lib/internal/_randomFormatIpv62.mjs +0 -17
- package/lib/internal/_randomFormatIpv62.mjs.map +0 -1
- package/lib/internal/_randomFormatIri2.mjs +0 -12
- package/lib/internal/_randomFormatIri2.mjs.map +0 -1
- package/lib/internal/_randomFormatIriReference2.mjs +0 -12
- package/lib/internal/_randomFormatIriReference2.mjs.map +0 -1
- package/lib/internal/_randomFormatJsonPointer2.mjs +0 -13
- package/lib/internal/_randomFormatJsonPointer2.mjs.map +0 -1
- package/lib/internal/_randomFormatPassword2.mjs +0 -16
- package/lib/internal/_randomFormatPassword2.mjs.map +0 -1
- package/lib/internal/_randomFormatRegex2.mjs +0 -10
- package/lib/internal/_randomFormatRegex2.mjs.map +0 -1
- package/lib/internal/_randomFormatRelativeJsonPointer2.mjs +0 -16
- package/lib/internal/_randomFormatRelativeJsonPointer2.mjs.map +0 -1
- package/lib/internal/_randomFormatTime2.mjs +0 -19
- package/lib/internal/_randomFormatTime2.mjs.map +0 -1
- package/lib/internal/_randomFormatUri2.mjs +0 -12
- package/lib/internal/_randomFormatUri2.mjs.map +0 -1
- package/lib/internal/_randomFormatUriReference2.mjs +0 -12
- package/lib/internal/_randomFormatUriReference2.mjs.map +0 -1
- package/lib/internal/_randomFormatUriTemplate2.mjs +0 -12
- package/lib/internal/_randomFormatUriTemplate2.mjs.map +0 -1
- package/lib/internal/_randomFormatUrl2.mjs +0 -17
- package/lib/internal/_randomFormatUrl2.mjs.map +0 -1
- package/lib/internal/_randomFormatUuid2.mjs +0 -13
- package/lib/internal/_randomFormatUuid2.mjs.map +0 -1
- package/lib/internal/_randomInteger2.mjs +0 -47
- package/lib/internal/_randomInteger2.mjs.map +0 -1
- package/lib/internal/_randomNumber2.mjs +0 -66
- package/lib/internal/_randomNumber2.mjs.map +0 -1
- package/lib/internal/_randomPattern2.mjs +0 -22
- package/lib/internal/_randomPattern2.mjs.map +0 -1
- package/lib/internal/_randomPick2.mjs +0 -17
- package/lib/internal/_randomPick2.mjs.map +0 -1
- package/lib/internal/_randomString2.mjs +0 -32
- package/lib/internal/_randomString2.mjs.map +0 -1
- package/lib/internal/_throwTypeGuardError2.mjs +0 -14
- package/lib/internal/_throwTypeGuardError2.mjs.map +0 -1
- package/lib/internal/_validateReport2.mjs +0 -29
- package/lib/internal/_validateReport2.mjs.map +0 -1
- package/lib/internal/private/__notationCapitalize2.mjs +0 -9
- package/lib/internal/private/__notationCapitalize2.mjs.map +0 -1
- package/lib/internal/private/__notationUnsnake2.mjs +0 -29
- package/lib/internal/private/__notationUnsnake2.mjs.map +0 -1
- package/lib/json2.mjs +0 -94
- package/lib/json2.mjs.map +0 -1
- package/lib/llm2.mjs +0 -54
- package/lib/llm2.mjs.map +0 -1
- package/lib/module2.mjs +0 -185
- package/lib/module2.mjs.map +0 -1
- package/lib/notations2.mjs +0 -169
- package/lib/notations2.mjs.map +0 -1
- package/lib/plain2.mjs +0 -119
- package/lib/plain2.mjs.map +0 -1
- package/lib/protobuf2.mjs +0 -94
- package/lib/protobuf2.mjs.map +0 -1
- package/lib/re-exports.mjs.map +0 -1
- package/lib/re-exports2.mjs +0 -17
- package/lib/re-exports2.mjs.map +0 -1
- package/lib/reflect2.mjs +0 -29
- package/lib/reflect2.mjs.map +0 -1
- package/lib/transform2.mjs +0 -26
- package/lib/transform2.mjs.map +0 -1
- package/lib/transformers/NoTransformConfigurationError2.mjs +0 -21
- package/lib/transformers/NoTransformConfigurationError2.mjs.map +0 -1
|
@@ -1,3 +1,474 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { __require } from "../_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
import { createCommand } from "commander";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import inquirer from "inquirer";
|
|
5
|
+
import { createRequire } from "module";
|
|
6
|
+
import path from "path";
|
|
7
|
+
import { glob, isDynamicPattern } from "tinyglobby";
|
|
8
|
+
//#region src/executable/TypiaGenerateWizard.ts
|
|
9
|
+
let TypiaGenerateWizard;
|
|
10
|
+
(function(_TypiaGenerateWizard) {
|
|
11
|
+
async function generate() {
|
|
12
|
+
console.log("----------------------------------------");
|
|
13
|
+
console.log(" Typia Generate Wizard");
|
|
14
|
+
console.log("----------------------------------------");
|
|
15
|
+
await build(await parseArguments());
|
|
16
|
+
}
|
|
17
|
+
_TypiaGenerateWizard.generate = generate;
|
|
18
|
+
async function parseArguments() {
|
|
19
|
+
const command = createCommand("typia generate");
|
|
20
|
+
command.usage("[options] [files...]");
|
|
21
|
+
command.argument("[files...]", "input TypeScript source files or globs");
|
|
22
|
+
command.option("--input <path>", "input directory");
|
|
23
|
+
command.option("--output <directory>", "output directory");
|
|
24
|
+
command.option("--project <project>", "tsconfig.json/jsconfig.json file or directory");
|
|
25
|
+
const questioned = { value: false };
|
|
26
|
+
const prompt = inquirer.createPromptModule;
|
|
27
|
+
const input = (name) => async (message) => {
|
|
28
|
+
questioned.value = true;
|
|
29
|
+
return (await prompt()({
|
|
30
|
+
type: "input",
|
|
31
|
+
name,
|
|
32
|
+
message,
|
|
33
|
+
default: ""
|
|
34
|
+
}))[name];
|
|
35
|
+
};
|
|
36
|
+
const configure = async () => {
|
|
37
|
+
const file = findProjectConfigFile(process.cwd());
|
|
38
|
+
if (file === null) throw new URIError(`Unable to find "tsconfig.json" or "jsconfig.json" file.`);
|
|
39
|
+
return file;
|
|
40
|
+
};
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
command.action(async (files, options) => {
|
|
43
|
+
try {
|
|
44
|
+
if (files.length !== 0 && options.input !== void 0) throw new URIError("Error on TypiaGenerateWizard.generate(): file arguments cannot be combined with --input.");
|
|
45
|
+
if (files.length === 0) options.input ??= await input("input")("input directory");
|
|
46
|
+
if (files.length !== 0 && options.output === void 0) throw new URIError("Error on TypiaGenerateWizard.generate(): output directory is required when file arguments are used.");
|
|
47
|
+
const output = options.output ?? await input("output")("output directory");
|
|
48
|
+
const project = options.project ?? await configure();
|
|
49
|
+
if (questioned.value) console.log("");
|
|
50
|
+
resolve({
|
|
51
|
+
input: options.input,
|
|
52
|
+
output,
|
|
53
|
+
project,
|
|
54
|
+
files
|
|
55
|
+
});
|
|
56
|
+
} catch (exp) {
|
|
57
|
+
reject(exp);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
command.parseAsync(process.argv.slice(3), { from: "user" }).catch(reject);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async function build(location) {
|
|
64
|
+
location.output = path.resolve(location.output);
|
|
65
|
+
location.project = resolveProjectConfigFile(location.project);
|
|
66
|
+
const entries = location.files.length === 0 ? await prepareDirectoryInput(location) : await prepareFileInputs(location);
|
|
67
|
+
const binary = resolveTsgoBinary();
|
|
68
|
+
const cwd = path.dirname(location.project);
|
|
69
|
+
const outputByKey = indexTransformedOutputs(transformProject({
|
|
70
|
+
binary,
|
|
71
|
+
cwd,
|
|
72
|
+
tsconfig: location.project
|
|
73
|
+
}));
|
|
74
|
+
const outputs = entries.map((entry) => {
|
|
75
|
+
const output = getTransformedOutput({
|
|
76
|
+
cwd,
|
|
77
|
+
entry,
|
|
78
|
+
outputByKey
|
|
79
|
+
});
|
|
80
|
+
if (output === void 0) throw new URIError(`Error on TypiaGenerateWizard.generate(): no transformed output for ${entry.file}. Check that --project includes the file.`);
|
|
81
|
+
return {
|
|
82
|
+
entry,
|
|
83
|
+
output
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
await ensureOutputDirectory(location.output);
|
|
87
|
+
await ensureTargetDirectories({
|
|
88
|
+
output: location.output,
|
|
89
|
+
targets: outputs.map(({ entry }) => entry.target)
|
|
90
|
+
});
|
|
91
|
+
await ensurePhysicalTargets({
|
|
92
|
+
output: location.output,
|
|
93
|
+
entries: outputs.map(({ entry }) => entry)
|
|
94
|
+
});
|
|
95
|
+
await ensureTargetFiles(outputs.map(({ entry }) => entry));
|
|
96
|
+
for (const { entry, output } of outputs) await fs.promises.writeFile(entry.target, formatOutput(output), "utf8");
|
|
97
|
+
}
|
|
98
|
+
async function ensureOutputDirectory(output) {
|
|
99
|
+
if (fs.existsSync(output) === false) {
|
|
100
|
+
await ensureCreatableDirectory(output);
|
|
101
|
+
await fs.promises.mkdir(output, { recursive: true });
|
|
102
|
+
} else await ensureExistingDirectory({
|
|
103
|
+
label: "output path",
|
|
104
|
+
directory: output
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async function ensureTargetDirectories(props) {
|
|
108
|
+
const directories = /* @__PURE__ */ new Map();
|
|
109
|
+
for (const target of props.targets) {
|
|
110
|
+
const directory = path.dirname(target);
|
|
111
|
+
directories.set(filesystemKey(directory), directory);
|
|
112
|
+
}
|
|
113
|
+
for (const directory of directories.values()) {
|
|
114
|
+
await ensureOutputAncestorDirectories({
|
|
115
|
+
output: props.output,
|
|
116
|
+
directory
|
|
117
|
+
});
|
|
118
|
+
if (fs.existsSync(directory)) await ensureExistingDirectory({
|
|
119
|
+
label: "output parent path",
|
|
120
|
+
directory
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
for (const directory of directories.values()) {
|
|
124
|
+
try {
|
|
125
|
+
await fs.promises.mkdir(directory, { recursive: true });
|
|
126
|
+
} catch (exp) {
|
|
127
|
+
throw new URIError(`Error on TypiaGenerateWizard.generate(): unable to create output parent directory ${directory}: ${formatUnknownError(exp)}`);
|
|
128
|
+
}
|
|
129
|
+
await ensureExistingDirectory({
|
|
130
|
+
label: "output parent path",
|
|
131
|
+
directory
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function ensureCreatableDirectory(directory) {
|
|
136
|
+
await ensureExistingDirectoryPath({
|
|
137
|
+
label: "output parent path",
|
|
138
|
+
directory: await nearestExistingAncestor(directory)
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async function nearestExistingAncestor(directory) {
|
|
142
|
+
let current = path.resolve(directory);
|
|
143
|
+
while (fs.existsSync(current) === false) {
|
|
144
|
+
const parent = path.dirname(current);
|
|
145
|
+
if (parent === current) throw new URIError(`Error on TypiaGenerateWizard.generate(): unable to find existing output parent path: ${directory}`);
|
|
146
|
+
current = parent;
|
|
147
|
+
}
|
|
148
|
+
return current;
|
|
149
|
+
}
|
|
150
|
+
async function ensureOutputAncestorDirectories(props) {
|
|
151
|
+
const output = path.resolve(props.output);
|
|
152
|
+
const directory = path.resolve(props.directory);
|
|
153
|
+
if (isSameOrChildPath(directory, output) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): output parent path escapes output directory: ${props.directory}`);
|
|
154
|
+
const relative = path.relative(output, directory);
|
|
155
|
+
if (relative === "") return;
|
|
156
|
+
let current = output;
|
|
157
|
+
for (const segment of relative.split(path.sep)) {
|
|
158
|
+
current = path.join(current, segment);
|
|
159
|
+
let stat;
|
|
160
|
+
try {
|
|
161
|
+
stat = await fs.promises.lstat(current);
|
|
162
|
+
} catch (exp) {
|
|
163
|
+
if (isMissingFileError(exp)) return;
|
|
164
|
+
throw new URIError(`Error on TypiaGenerateWizard.generate(): unable to inspect output parent path ${current}: ${formatUnknownError(exp)}`);
|
|
165
|
+
}
|
|
166
|
+
if (stat.isSymbolicLink()) throw new URIError(`Error on TypiaGenerateWizard.generate(): output parent path contains a symbolic link: ${current}`);
|
|
167
|
+
if (stat.isDirectory() === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): output parent path is not a directory: ${current}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async function ensureExistingDirectory(props) {
|
|
171
|
+
await ensureExistingDirectoryPath(props);
|
|
172
|
+
}
|
|
173
|
+
async function ensureExistingDirectoryPath(props) {
|
|
174
|
+
const directory = path.resolve(props.directory);
|
|
175
|
+
const parsed = path.parse(directory);
|
|
176
|
+
const relative = path.relative(parsed.root, directory);
|
|
177
|
+
let current = parsed.root;
|
|
178
|
+
for (const segment of relative === "" ? [] : relative.split(path.sep)) {
|
|
179
|
+
current = path.join(current, segment);
|
|
180
|
+
await ensureExistingDirectorySegment({
|
|
181
|
+
label: filesystemKey(current) === filesystemKey(directory) ? props.label : `${props.label} ancestor`,
|
|
182
|
+
directory: current
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function ensureExistingDirectorySegment(props) {
|
|
187
|
+
const stat = await fs.promises.lstat(props.directory);
|
|
188
|
+
if (stat.isSymbolicLink()) throw new URIError(`Error on TypiaGenerateWizard.generate(): ${props.label} is a symbolic link: ${props.directory}`);
|
|
189
|
+
if (stat.isDirectory() === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): ${props.label} is not a directory: ${props.directory}`);
|
|
190
|
+
}
|
|
191
|
+
async function ensurePhysicalTargets(props) {
|
|
192
|
+
const output = await fs.promises.realpath(props.output);
|
|
193
|
+
const inputs = /* @__PURE__ */ new Set();
|
|
194
|
+
for (const entry of props.entries) inputs.add(filesystemKey(await fs.promises.realpath(entry.file)));
|
|
195
|
+
for (const entry of props.entries) {
|
|
196
|
+
const parent = path.dirname(entry.target);
|
|
197
|
+
const directory = await fs.promises.realpath(parent);
|
|
198
|
+
if (isSameOrChildPath(directory, output) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): output parent path escapes output directory through a symbolic link: ${parent}`);
|
|
199
|
+
const target = path.join(directory, path.basename(entry.target));
|
|
200
|
+
if (inputs.has(filesystemKey(target))) throw new URIError(`Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a symbolic link: ${entry.target}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function ensureTargetFiles(entries) {
|
|
204
|
+
const inputs = /* @__PURE__ */ new Set();
|
|
205
|
+
const files = /* @__PURE__ */ new Map();
|
|
206
|
+
for (const entry of entries) {
|
|
207
|
+
inputs.add(fileIdentityKey(await fs.promises.stat(entry.file)));
|
|
208
|
+
files.set(filesystemKey(entry.target), entry);
|
|
209
|
+
}
|
|
210
|
+
for (const entry of files.values()) {
|
|
211
|
+
let stat;
|
|
212
|
+
try {
|
|
213
|
+
stat = await fs.promises.lstat(entry.target);
|
|
214
|
+
} catch (exp) {
|
|
215
|
+
if (isMissingFileError(exp)) continue;
|
|
216
|
+
throw new URIError(`Error on TypiaGenerateWizard.generate(): unable to inspect output file ${entry.target}: ${formatUnknownError(exp)}`);
|
|
217
|
+
}
|
|
218
|
+
if (stat.isFile() === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): output file path is not a regular file: ${entry.target}`);
|
|
219
|
+
if (inputs.has(fileIdentityKey(stat))) throw new URIError(`Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a physical file alias: ${entry.target}`);
|
|
220
|
+
if (stat.nlink > 1) throw new URIError(`Error on TypiaGenerateWizard.generate(): output file has multiple hard links: ${entry.target}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
async function prepareDirectoryInput(location) {
|
|
224
|
+
if (location.input === void 0) throw new URIError("Error on TypiaGenerateWizard.generate(): input path is required.");
|
|
225
|
+
const input = path.resolve(location.input);
|
|
226
|
+
if (fs.existsSync(input) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): input path does not exist: ${input}`);
|
|
227
|
+
if (await isDirectory(input) === false) throw new URIError("Error on TypiaGenerateWizard.generate(): input path is not a directory.");
|
|
228
|
+
const files = [];
|
|
229
|
+
await gather({
|
|
230
|
+
location: {
|
|
231
|
+
input,
|
|
232
|
+
output: location.output
|
|
233
|
+
},
|
|
234
|
+
container: files,
|
|
235
|
+
from: input,
|
|
236
|
+
to: location.output
|
|
237
|
+
});
|
|
238
|
+
return files.map((file) => ({
|
|
239
|
+
file,
|
|
240
|
+
target: path.join(location.output, path.relative(input, file))
|
|
241
|
+
}));
|
|
242
|
+
}
|
|
243
|
+
async function prepareFileInputs(location) {
|
|
244
|
+
const targets = /* @__PURE__ */ new Set();
|
|
245
|
+
const output = [];
|
|
246
|
+
for (const input of await expandFileInputs(location.files, location.output)) {
|
|
247
|
+
const file = path.resolve(input);
|
|
248
|
+
if (fs.existsSync(file) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): input file does not exist: ${input}`);
|
|
249
|
+
else if (await isFile(file) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): input path is not a file: ${input}`);
|
|
250
|
+
else if (isDeclarationFile(file)) continue;
|
|
251
|
+
else if (isSupportedExtension(file) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): input file is not a supported TypeScript source: ${input}`);
|
|
252
|
+
const target = path.join(location.output, path.basename(file));
|
|
253
|
+
if (isSamePath(file, target)) throw new URIError(`Error on TypiaGenerateWizard.generate(): output file would overwrite input file: ${input}`);
|
|
254
|
+
const key = filesystemKey(target);
|
|
255
|
+
if (targets.has(key)) throw new URIError(`Error on TypiaGenerateWizard.generate(): duplicate output filename for ${target}`);
|
|
256
|
+
targets.add(key);
|
|
257
|
+
output.push({
|
|
258
|
+
file,
|
|
259
|
+
target
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
if (output.length === 0) throw new URIError("Error on TypiaGenerateWizard.generate(): input files do not include any supported TypeScript source files outside the output directory.");
|
|
263
|
+
return output;
|
|
264
|
+
}
|
|
265
|
+
async function expandFileInputs(inputs, directory) {
|
|
266
|
+
const output = [];
|
|
267
|
+
for (const input of inputs) {
|
|
268
|
+
const pattern = toGlobPattern(input);
|
|
269
|
+
if (isDynamicPattern(pattern, { caseSensitiveMatch: true })) {
|
|
270
|
+
const matches = await glob(pattern, {
|
|
271
|
+
absolute: true,
|
|
272
|
+
caseSensitiveMatch: isCaseSensitive(),
|
|
273
|
+
cwd: process.cwd(),
|
|
274
|
+
onlyFiles: true
|
|
275
|
+
});
|
|
276
|
+
if (matches.length === 0) throw new URIError(`Error on TypiaGenerateWizard.generate(): input pattern does not match any files: ${input}`);
|
|
277
|
+
output.push(...excludeOutputFiles(matches, directory).filter(isSupportedExtension));
|
|
278
|
+
} else {
|
|
279
|
+
const file = path.resolve(input);
|
|
280
|
+
if (isSameOrChildPath(file, directory) === false) output.push(file);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return output;
|
|
284
|
+
}
|
|
285
|
+
function excludeOutputFiles(files, directory) {
|
|
286
|
+
return files.filter((file) => isSameOrChildPath(file, directory) === false);
|
|
287
|
+
}
|
|
288
|
+
function toGlobPattern(input) {
|
|
289
|
+
return input.replace(/\\/g, "/");
|
|
290
|
+
}
|
|
291
|
+
function transformProject(props) {
|
|
292
|
+
const result = new (loadTtscCompiler())({
|
|
293
|
+
binary: props.binary,
|
|
294
|
+
cwd: props.cwd,
|
|
295
|
+
tsconfig: props.tsconfig
|
|
296
|
+
}).transform();
|
|
297
|
+
if (result.type === "success") return result.typescript;
|
|
298
|
+
if (result.type === "failure") throw new URIError(`Error on TypiaGenerateWizard.generate(): ${formatDiagnostics(result.diagnostics)}`);
|
|
299
|
+
throw new URIError(`Error on TypiaGenerateWizard.generate(): ${formatUnknownError(result.error)}`);
|
|
300
|
+
}
|
|
301
|
+
function resolveProjectConfigFile(project) {
|
|
302
|
+
const resolved = path.resolve(project);
|
|
303
|
+
if (fs.existsSync(resolved) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): project path does not exist: ${resolved}`);
|
|
304
|
+
const stat = fs.statSync(resolved);
|
|
305
|
+
if (stat.isDirectory()) {
|
|
306
|
+
for (const filename of ["tsconfig.json", "jsconfig.json"]) {
|
|
307
|
+
const candidate = path.join(resolved, filename);
|
|
308
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) return resolveRealPath(candidate);
|
|
309
|
+
}
|
|
310
|
+
throw new URIError(`Error on TypiaGenerateWizard.generate(): project directory has no tsconfig.json or jsconfig.json: ${resolved}`);
|
|
311
|
+
}
|
|
312
|
+
if (stat.isFile() === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): project path is not a file: ${resolved}`);
|
|
313
|
+
return resolveRealPath(resolved);
|
|
314
|
+
}
|
|
315
|
+
function findProjectConfigFile(directory) {
|
|
316
|
+
let current = path.resolve(directory);
|
|
317
|
+
while (true) {
|
|
318
|
+
for (const filename of ["tsconfig.json", "jsconfig.json"]) {
|
|
319
|
+
const candidate = path.join(current, filename);
|
|
320
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) return resolveRealPath(candidate);
|
|
321
|
+
}
|
|
322
|
+
const parent = path.dirname(current);
|
|
323
|
+
if (parent === current) return null;
|
|
324
|
+
current = parent;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
function loadTtscCompiler() {
|
|
328
|
+
const resolved = resolveFromRoots("ttsc", resolveRuntimeRoots(resolveTypiaPackageRoot()));
|
|
329
|
+
if (resolved === null) throw new URIError(`Error on TypiaGenerateWizard.generate(): unable to resolve ttsc from the current project, typia package, or workspace root. Run "npm i -D ttsc typescript" before.`);
|
|
330
|
+
return createRequire(resolved)(resolved).TtscCompiler;
|
|
331
|
+
}
|
|
332
|
+
function resolveTsgoBinary() {
|
|
333
|
+
const explicit = process.env.TTSC_TSGO_BINARY;
|
|
334
|
+
if (explicit !== void 0 && explicit.length !== 0) {
|
|
335
|
+
if (path.isAbsolute(explicit) && fs.existsSync(explicit)) return explicit;
|
|
336
|
+
throw new URIError(`Error on TypiaGenerateWizard.generate(): TTSC_TSGO_BINARY must be an existing absolute path: ${explicit}`);
|
|
337
|
+
}
|
|
338
|
+
const manifest = resolveFromRoots("typescript/package.json", resolveRuntimeRoots(resolveTypiaPackageRoot()));
|
|
339
|
+
if (manifest === null) throw new URIError("Error on TypiaGenerateWizard.generate(): unable to resolve typescript from the current project, typia package, or workspace root.");
|
|
340
|
+
const platform = `@typescript/typescript-${process.platform}-${process.arch}`;
|
|
341
|
+
const platformManifest = createRequire(manifest).resolve(`${platform}/package.json`);
|
|
342
|
+
const binary = path.join(path.dirname(platformManifest), "lib", process.platform === "win32" ? "tsc.exe" : "tsc");
|
|
343
|
+
if (fs.existsSync(binary) === false) throw new URIError(`Error on TypiaGenerateWizard.generate(): TypeScript-Go executable not found: ${binary}`);
|
|
344
|
+
return binary;
|
|
345
|
+
}
|
|
346
|
+
function resolveTypiaPackageRoot() {
|
|
347
|
+
const current = path.dirname(path.resolve(process.argv[1] ?? ""));
|
|
348
|
+
for (const directory of [path.resolve(current, "..", ".."), path.resolve(current, "..")]) {
|
|
349
|
+
const file = path.join(directory, "package.json");
|
|
350
|
+
if (fs.existsSync(file) === false) continue;
|
|
351
|
+
try {
|
|
352
|
+
if (JSON.parse(fs.readFileSync(file, "utf8")).name === "typia") return directory;
|
|
353
|
+
} catch {
|
|
354
|
+
continue;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
const resolved = resolveFromRoots("typia/package.json", [process.cwd(), current]);
|
|
358
|
+
if (resolved === null) throw new URIError("Error on TypiaGenerateWizard.generate(): unable to resolve typia package root.");
|
|
359
|
+
return path.dirname(resolved);
|
|
360
|
+
}
|
|
361
|
+
function resolveRuntimeRoots(packageRoot) {
|
|
362
|
+
return [
|
|
363
|
+
process.cwd(),
|
|
364
|
+
packageRoot,
|
|
365
|
+
path.resolve(packageRoot, "..", "..")
|
|
366
|
+
];
|
|
367
|
+
}
|
|
368
|
+
function resolveFromRoots(request, roots) {
|
|
369
|
+
for (const root of roots) try {
|
|
370
|
+
return __require.resolve(request, { paths: [root] });
|
|
371
|
+
} catch {
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
return null;
|
|
375
|
+
}
|
|
376
|
+
async function isDirectory(current) {
|
|
377
|
+
return (await fs.promises.stat(current)).isDirectory();
|
|
378
|
+
}
|
|
379
|
+
async function isFile(current) {
|
|
380
|
+
return (await fs.promises.stat(current)).isFile();
|
|
381
|
+
}
|
|
382
|
+
async function gather(props) {
|
|
383
|
+
if (isSamePath(props.from, props.location.output)) return;
|
|
384
|
+
for (const file of await fs.promises.readdir(props.from)) {
|
|
385
|
+
const next = path.join(props.from, file);
|
|
386
|
+
if ((await fs.promises.stat(next)).isDirectory()) {
|
|
387
|
+
await gather({
|
|
388
|
+
location: props.location,
|
|
389
|
+
container: props.container,
|
|
390
|
+
from: next,
|
|
391
|
+
to: path.join(props.to, file)
|
|
392
|
+
});
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
if (isSupportedExtension(file)) props.container.push(next);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
function isSupportedExtension(filename) {
|
|
399
|
+
const normalized = isCaseSensitive() ? filename : filename.toLowerCase();
|
|
400
|
+
return TS_PATTERN.test(normalized) && !DTS_PATTERN.test(normalized);
|
|
401
|
+
}
|
|
402
|
+
function isDeclarationFile(filename) {
|
|
403
|
+
const normalized = isCaseSensitive() ? filename : filename.toLowerCase();
|
|
404
|
+
return DTS_PATTERN.test(normalized);
|
|
405
|
+
}
|
|
406
|
+
function formatOutput(output) {
|
|
407
|
+
return output.startsWith("// @ts-nocheck") ? output : `// @ts-nocheck\n${output}`;
|
|
408
|
+
}
|
|
409
|
+
function indexTransformedOutputs(outputs) {
|
|
410
|
+
const map = /* @__PURE__ */ new Map();
|
|
411
|
+
for (const [file, output] of Object.entries(outputs)) map.set(projectFileKey(file), output);
|
|
412
|
+
return map;
|
|
413
|
+
}
|
|
414
|
+
function getTransformedOutput(props) {
|
|
415
|
+
const output = props.outputByKey.get(projectFileKey(projectKey(props.cwd, props.entry.file)));
|
|
416
|
+
if (output !== void 0) return output;
|
|
417
|
+
const real = resolveRealPath(props.entry.file);
|
|
418
|
+
if (isSamePath(real, props.entry.file) || isSameOrChildPath(real, props.cwd) === false) return;
|
|
419
|
+
return props.outputByKey.get(projectFileKey(projectKey(props.cwd, real)));
|
|
420
|
+
}
|
|
421
|
+
function projectKey(root, file) {
|
|
422
|
+
return path.relative(root, file).replace(/\\/g, "/");
|
|
423
|
+
}
|
|
424
|
+
function projectFileKey(file) {
|
|
425
|
+
return isCaseSensitive() ? file : file.toLowerCase();
|
|
426
|
+
}
|
|
427
|
+
function resolveRealPath(file) {
|
|
428
|
+
try {
|
|
429
|
+
return fs.realpathSync(file);
|
|
430
|
+
} catch {
|
|
431
|
+
return file;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
function isSamePath(x, y) {
|
|
435
|
+
return filesystemKey(x) === filesystemKey(y);
|
|
436
|
+
}
|
|
437
|
+
function isSameOrChildPath(file, directory) {
|
|
438
|
+
const fileKey = filesystemKey(path.resolve(file));
|
|
439
|
+
const directoryKey = filesystemKey(path.resolve(directory));
|
|
440
|
+
const directoryPrefix = directoryKey.endsWith(path.sep) ? directoryKey : `${directoryKey}${path.sep}`;
|
|
441
|
+
return fileKey === directoryKey || fileKey.startsWith(directoryPrefix);
|
|
442
|
+
}
|
|
443
|
+
function filesystemKey(file) {
|
|
444
|
+
const normalized = path.normalize(file);
|
|
445
|
+
return isCaseSensitive() ? normalized : normalized.toLowerCase();
|
|
446
|
+
}
|
|
447
|
+
function isCaseSensitive() {
|
|
448
|
+
return process.platform !== "win32" && process.platform !== "darwin";
|
|
449
|
+
}
|
|
450
|
+
function isMissingFileError(exp) {
|
|
451
|
+
return typeof exp === "object" && exp !== null && "code" in exp && exp.code === "ENOENT";
|
|
452
|
+
}
|
|
453
|
+
function fileIdentityKey(stat) {
|
|
454
|
+
return `${stat.dev}:${stat.ino}`;
|
|
455
|
+
}
|
|
456
|
+
function formatDiagnostics(diagnostics) {
|
|
457
|
+
return diagnostics.length === 0 ? "transformation failed" : diagnostics.map((diag) => [
|
|
458
|
+
diag.file ?? "ttsc",
|
|
459
|
+
diag.line === void 0 ? void 0 : `${diag.line}:${diag.character ?? 1}`,
|
|
460
|
+
diag.messageText
|
|
461
|
+
].filter((part) => part !== void 0 && part !== "").join(": ")).join("\n");
|
|
462
|
+
}
|
|
463
|
+
function formatUnknownError(error) {
|
|
464
|
+
if (error instanceof Error) return error.message;
|
|
465
|
+
if (typeof error === "object" && error !== null && "message" in error && typeof error.message === "string") return error.message;
|
|
466
|
+
return String(error);
|
|
467
|
+
}
|
|
468
|
+
})(TypiaGenerateWizard || (TypiaGenerateWizard = {}));
|
|
469
|
+
const TS_PATTERN = /\.[cm]?tsx?$/;
|
|
470
|
+
const DTS_PATTERN = /\.d\.[cm]?tsx?$/;
|
|
471
|
+
//#endregion
|
|
472
|
+
export { TypiaGenerateWizard };
|
|
473
|
+
|
|
474
|
+
//# sourceMappingURL=TypiaGenerateWizard.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypiaGenerateWizard.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"TypiaGenerateWizard.mjs","names":[],"sources":["../../src/executable/TypiaGenerateWizard.ts"],"sourcesContent":["import { createCommand } from \"commander\";\nimport fs from \"fs\";\nimport inquirer from \"inquirer\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport { glob, isDynamicPattern } from \"tinyglobby\";\nimport type {\n ITtscCompilerDiagnostic,\n ITtscCompilerTransformation,\n} from \"ttsc\";\n\nexport namespace TypiaGenerateWizard {\n export async function generate(): Promise<void> {\n console.log(\"----------------------------------------\");\n console.log(\" Typia Generate Wizard\");\n console.log(\"----------------------------------------\");\n\n const options: IArguments = await parseArguments();\n await build(options);\n }\n\n async function parseArguments(): Promise<IArguments> {\n const command = createCommand(\"typia generate\");\n command.usage(\"[options] [files...]\");\n command.argument(\"[files...]\", \"input TypeScript source files or globs\");\n command.option(\"--input <path>\", \"input directory\");\n command.option(\"--output <directory>\", \"output directory\");\n command.option(\n \"--project <project>\",\n \"tsconfig.json/jsconfig.json file or directory\",\n );\n\n const questioned = { value: false };\n const prompt = inquirer.createPromptModule;\n\n const input = (name: string) => async (message: string) => {\n questioned.value = true;\n const result = await prompt()({\n type: \"input\",\n name,\n message,\n default: \"\",\n });\n return result[name] as string;\n };\n const configure = async (): Promise<string> => {\n const file: string | null = findProjectConfigFile(process.cwd());\n if (file === null) {\n throw new URIError(\n `Unable to find \"tsconfig.json\" or \"jsconfig.json\" file.`,\n );\n }\n return file;\n };\n\n return new Promise<IArguments>((resolve, reject) => {\n command.action(async (files: string[], options: Partial<IArguments>) => {\n try {\n if (files.length !== 0 && options.input !== undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): file arguments cannot be combined with --input.\",\n );\n }\n if (files.length === 0) {\n options.input ??= await input(\"input\")(\"input directory\");\n }\n if (files.length !== 0 && options.output === undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): output directory is required when file arguments are used.\",\n );\n }\n const output: string =\n options.output ?? (await input(\"output\")(\"output directory\"));\n const project: string = options.project ?? (await configure());\n if (questioned.value) console.log(\"\");\n resolve({\n input: options.input,\n output,\n project,\n files,\n });\n } catch (exp) {\n reject(exp);\n }\n });\n command.parseAsync(process.argv.slice(3), { from: \"user\" }).catch(reject);\n });\n }\n\n export interface IArguments {\n input?: string;\n output: string;\n project: string;\n files: string[];\n }\n\n async function build(location: IArguments): Promise<void> {\n location.output = path.resolve(location.output);\n location.project = resolveProjectConfigFile(location.project);\n\n const entries: IInputFile[] =\n location.files.length === 0\n ? await prepareDirectoryInput(location)\n : await prepareFileInputs(location);\n\n const binary = resolveTsgoBinary();\n const cwd = path.dirname(location.project);\n const transformed = transformProject({\n binary,\n cwd,\n tsconfig: location.project,\n });\n const outputByKey: Map<string, string> =\n indexTransformedOutputs(transformed);\n const outputs: IOutputFile[] = entries.map((entry) => {\n const output = getTransformedOutput({\n cwd,\n entry,\n outputByKey,\n });\n if (output === undefined) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): no transformed output for ${entry.file}. Check that --project includes the file.`,\n );\n }\n return { entry, output };\n });\n\n await ensureOutputDirectory(location.output);\n await ensureTargetDirectories({\n output: location.output,\n targets: outputs.map(({ entry }) => entry.target),\n });\n await ensurePhysicalTargets({\n output: location.output,\n entries: outputs.map(({ entry }) => entry),\n });\n await ensureTargetFiles(outputs.map(({ entry }) => entry));\n for (const { entry, output } of outputs) {\n await fs.promises.writeFile(entry.target, formatOutput(output), \"utf8\");\n }\n }\n\n interface IInputFile {\n file: string;\n target: string;\n }\n\n interface IOutputFile {\n entry: IInputFile;\n output: string;\n }\n\n async function ensureOutputDirectory(output: string): Promise<void> {\n if (fs.existsSync(output) === false) {\n await ensureCreatableDirectory(output);\n await fs.promises.mkdir(output, { recursive: true });\n } else {\n await ensureExistingDirectory({\n label: \"output path\",\n directory: output,\n });\n }\n }\n\n async function ensureTargetDirectories(props: {\n output: string;\n targets: string[];\n }): Promise<void> {\n const directories: Map<string, string> = new Map();\n for (const target of props.targets) {\n const directory: string = path.dirname(target);\n directories.set(filesystemKey(directory), directory);\n }\n\n for (const directory of directories.values()) {\n await ensureOutputAncestorDirectories({\n output: props.output,\n directory,\n });\n if (fs.existsSync(directory)) {\n await ensureExistingDirectory({\n label: \"output parent path\",\n directory,\n });\n }\n }\n for (const directory of directories.values()) {\n try {\n await fs.promises.mkdir(directory, { recursive: true });\n } catch (exp) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to create output parent directory ${directory}: ${formatUnknownError(exp)}`,\n );\n }\n await ensureExistingDirectory({\n label: \"output parent path\",\n directory,\n });\n }\n }\n\n async function ensureCreatableDirectory(directory: string): Promise<void> {\n const parent: string = await nearestExistingAncestor(directory);\n await ensureExistingDirectoryPath({\n label: \"output parent path\",\n directory: parent,\n });\n }\n\n async function nearestExistingAncestor(directory: string): Promise<string> {\n let current: string = path.resolve(directory);\n while (fs.existsSync(current) === false) {\n const parent: string = path.dirname(current);\n if (parent === current) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to find existing output parent path: ${directory}`,\n );\n }\n current = parent;\n }\n return current;\n }\n\n async function ensureOutputAncestorDirectories(props: {\n output: string;\n directory: string;\n }): Promise<void> {\n const output: string = path.resolve(props.output);\n const directory: string = path.resolve(props.directory);\n if (isSameOrChildPath(directory, output) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path escapes output directory: ${props.directory}`,\n );\n }\n\n const relative: string = path.relative(output, directory);\n if (relative === \"\") {\n return;\n }\n\n let current: string = output;\n for (const segment of relative.split(path.sep)) {\n current = path.join(current, segment);\n let stat: fs.Stats;\n try {\n stat = await fs.promises.lstat(current);\n } catch (exp) {\n if (isMissingFileError(exp)) {\n return;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect output parent path ${current}: ${formatUnknownError(exp)}`,\n );\n }\n if (stat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path contains a symbolic link: ${current}`,\n );\n }\n if (stat.isDirectory() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path is not a directory: ${current}`,\n );\n }\n }\n }\n\n async function ensureExistingDirectory(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n await ensureExistingDirectoryPath(props);\n }\n\n async function ensureExistingDirectoryPath(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n const directory: string = path.resolve(props.directory);\n const parsed: path.ParsedPath = path.parse(directory);\n const relative: string = path.relative(parsed.root, directory);\n let current: string = parsed.root;\n for (const segment of relative === \"\" ? [] : relative.split(path.sep)) {\n current = path.join(current, segment);\n await ensureExistingDirectorySegment({\n label:\n filesystemKey(current) === filesystemKey(directory)\n ? props.label\n : `${props.label} ancestor`,\n directory: current,\n });\n }\n }\n\n async function ensureExistingDirectorySegment(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n const stat: fs.Stats = await fs.promises.lstat(props.directory);\n if (stat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${props.label} is a symbolic link: ${props.directory}`,\n );\n }\n if (stat.isDirectory() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${props.label} is not a directory: ${props.directory}`,\n );\n }\n }\n\n async function ensurePhysicalTargets(props: {\n output: string;\n entries: IInputFile[];\n }): Promise<void> {\n const output: string = await fs.promises.realpath(props.output);\n const inputs: Set<string> = new Set();\n for (const entry of props.entries) {\n inputs.add(filesystemKey(await fs.promises.realpath(entry.file)));\n }\n\n for (const entry of props.entries) {\n const parent: string = path.dirname(entry.target);\n const directory: string = await fs.promises.realpath(parent);\n if (isSameOrChildPath(directory, output) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path escapes output directory through a symbolic link: ${parent}`,\n );\n }\n\n const target: string = path.join(directory, path.basename(entry.target));\n if (inputs.has(filesystemKey(target))) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a symbolic link: ${entry.target}`,\n );\n }\n }\n }\n\n async function ensureTargetFiles(entries: IInputFile[]): Promise<void> {\n const inputs: Set<string> = new Set();\n const files: Map<string, IInputFile> = new Map();\n for (const entry of entries) {\n inputs.add(fileIdentityKey(await fs.promises.stat(entry.file)));\n files.set(filesystemKey(entry.target), entry);\n }\n\n for (const entry of files.values()) {\n let stat: fs.Stats;\n try {\n stat = await fs.promises.lstat(entry.target);\n } catch (exp) {\n if (isMissingFileError(exp)) {\n continue;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect output file ${entry.target}: ${formatUnknownError(exp)}`,\n );\n }\n if (stat.isFile() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file path is not a regular file: ${entry.target}`,\n );\n }\n if (inputs.has(fileIdentityKey(stat))) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a physical file alias: ${entry.target}`,\n );\n }\n if (stat.nlink > 1) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file has multiple hard links: ${entry.target}`,\n );\n }\n }\n }\n\n async function prepareDirectoryInput(\n location: IArguments,\n ): Promise<IInputFile[]> {\n if (location.input === undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input path is required.\",\n );\n }\n const input = path.resolve(location.input);\n if (fs.existsSync(input) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path does not exist: ${input}`,\n );\n }\n if ((await isDirectory(input)) === false) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input path is not a directory.\",\n );\n }\n\n const files: string[] = [];\n await gather({\n location: {\n input,\n output: location.output,\n },\n container: files,\n from: input,\n to: location.output,\n });\n return files.map((file) => ({\n file,\n target: path.join(location.output, path.relative(input, file)),\n }));\n }\n\n async function prepareFileInputs(\n location: IArguments,\n ): Promise<IInputFile[]> {\n const targets: Set<string> = new Set();\n const output: IInputFile[] = [];\n for (const input of await expandFileInputs(\n location.files,\n location.output,\n )) {\n const file: string = path.resolve(input);\n if (fs.existsSync(file) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input file does not exist: ${input}`,\n );\n } else if ((await isFile(file)) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path is not a file: ${input}`,\n );\n } else if (isDeclarationFile(file)) {\n continue;\n } else if (isSupportedExtension(file) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input file is not a supported TypeScript source: ${input}`,\n );\n }\n\n const target: string = path.join(location.output, path.basename(file));\n if (isSamePath(file, target)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file: ${input}`,\n );\n }\n const key: string = filesystemKey(target);\n if (targets.has(key)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): duplicate output filename for ${target}`,\n );\n }\n targets.add(key);\n output.push({ file, target });\n }\n if (output.length === 0) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input files do not include any supported TypeScript source files outside the output directory.\",\n );\n }\n return output;\n }\n\n async function expandFileInputs(\n inputs: string[],\n directory: string,\n ): Promise<string[]> {\n const output: string[] = [];\n for (const input of inputs) {\n const pattern: string = toGlobPattern(input);\n if (isDynamicPattern(pattern, { caseSensitiveMatch: true })) {\n const matches: string[] = await glob(pattern, {\n absolute: true,\n caseSensitiveMatch: isCaseSensitive(),\n cwd: process.cwd(),\n onlyFiles: true,\n });\n if (matches.length === 0) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input pattern does not match any files: ${input}`,\n );\n }\n output.push(\n ...excludeOutputFiles(matches, directory).filter(\n isSupportedExtension,\n ),\n );\n } else {\n const file: string = path.resolve(input);\n if (isSameOrChildPath(file, directory) === false) {\n output.push(file);\n }\n }\n }\n return output;\n }\n\n function excludeOutputFiles(files: string[], directory: string): string[] {\n return files.filter((file) => isSameOrChildPath(file, directory) === false);\n }\n\n function toGlobPattern(input: string): string {\n return input.replace(/\\\\/g, \"/\");\n }\n\n function transformProject(props: {\n binary: string;\n cwd: string;\n tsconfig: string;\n }): Record<string, string> {\n const TtscCompiler = loadTtscCompiler();\n const result: ITtscCompilerTransformation = new TtscCompiler({\n binary: props.binary,\n cwd: props.cwd,\n tsconfig: props.tsconfig,\n }).transform();\n if (result.type === \"success\") {\n return result.typescript;\n }\n if (result.type === \"failure\") {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${formatDiagnostics(result.diagnostics)}`,\n );\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${formatUnknownError(result.error)}`,\n );\n }\n\n function resolveProjectConfigFile(project: string): string {\n const resolved: string = path.resolve(project);\n if (fs.existsSync(resolved) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project path does not exist: ${resolved}`,\n );\n }\n\n const stat: fs.Stats = fs.statSync(resolved);\n if (stat.isDirectory()) {\n for (const filename of [\"tsconfig.json\", \"jsconfig.json\"]) {\n const candidate: string = path.join(resolved, filename);\n if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {\n return resolveRealPath(candidate);\n }\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project directory has no tsconfig.json or jsconfig.json: ${resolved}`,\n );\n }\n if (stat.isFile() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project path is not a file: ${resolved}`,\n );\n }\n return resolveRealPath(resolved);\n }\n\n function findProjectConfigFile(directory: string): string | null {\n let current: string = path.resolve(directory);\n while (true) {\n for (const filename of [\"tsconfig.json\", \"jsconfig.json\"]) {\n const candidate: string = path.join(current, filename);\n if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {\n return resolveRealPath(candidate);\n }\n }\n const parent: string = path.dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n }\n\n function loadTtscCompiler(): typeof import(\"ttsc\").TtscCompiler {\n const packageRoot: string = resolveTypiaPackageRoot();\n const resolved: string | null = resolveFromRoots(\n \"ttsc\",\n resolveRuntimeRoots(packageRoot),\n );\n if (resolved === null) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to resolve ttsc from the current project, typia package, or workspace root. Run \"npm i -D ttsc typescript\" before.`,\n );\n }\n const imported = createRequire(resolved)(resolved) as typeof import(\"ttsc\");\n return imported.TtscCompiler;\n }\n\n function resolveTsgoBinary(): string {\n const explicit: string | undefined = process.env.TTSC_TSGO_BINARY;\n if (explicit !== undefined && explicit.length !== 0) {\n if (path.isAbsolute(explicit) && fs.existsSync(explicit)) {\n return explicit;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): TTSC_TSGO_BINARY must be an existing absolute path: ${explicit}`,\n );\n }\n\n const packageRoot: string = resolveTypiaPackageRoot();\n const manifest: string | null = resolveFromRoots(\n \"typescript/package.json\",\n resolveRuntimeRoots(packageRoot),\n );\n if (manifest === null) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): unable to resolve typescript from the current project, typia package, or workspace root.\",\n );\n }\n\n const platform: string = `@typescript/typescript-${process.platform}-${process.arch}`;\n const platformManifest: string = createRequire(manifest).resolve(\n `${platform}/package.json`,\n );\n const binary: string = path.join(\n path.dirname(platformManifest),\n \"lib\",\n process.platform === \"win32\" ? \"tsc.exe\" : \"tsc\",\n );\n if (fs.existsSync(binary) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): TypeScript-Go executable not found: ${binary}`,\n );\n }\n return binary;\n }\n\n function resolveTypiaPackageRoot(): string {\n // The CLI entrypoint (`lib/executable/typia.js`) lives in the same\n // directory as this module, so its `process.argv[1]` path anchors the\n // walk-up identically in both the CJS and ESM builds — `__dirname` does\n // not exist in the transcoded `.mjs`.\n const current: string = path.dirname(path.resolve(process.argv[1] ?? \"\"));\n for (const directory of [\n path.resolve(current, \"..\", \"..\"),\n path.resolve(current, \"..\"),\n ]) {\n const file: string = path.join(directory, \"package.json\");\n if (fs.existsSync(file) === false) {\n continue;\n }\n try {\n const pack = JSON.parse(fs.readFileSync(file, \"utf8\")) as Partial<\n Record<\"name\", unknown>\n >;\n if (pack.name === \"typia\") {\n return directory;\n }\n } catch {\n continue;\n }\n }\n\n const resolved: string | null = resolveFromRoots(\"typia/package.json\", [\n process.cwd(),\n current,\n ]);\n if (resolved === null) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): unable to resolve typia package root.\",\n );\n }\n return path.dirname(resolved);\n }\n\n function resolveRuntimeRoots(packageRoot: string): string[] {\n return [process.cwd(), packageRoot, path.resolve(packageRoot, \"..\", \"..\")];\n }\n\n function resolveFromRoots(request: string, roots: string[]): string | null {\n for (const root of roots) {\n try {\n return require.resolve(request, { paths: [root] });\n } catch {\n continue;\n }\n }\n return null;\n }\n\n async function isDirectory(current: string): Promise<boolean> {\n const stat: fs.Stats = await fs.promises.stat(current);\n return stat.isDirectory();\n }\n\n async function isFile(current: string): Promise<boolean> {\n const stat: fs.Stats = await fs.promises.stat(current);\n return stat.isFile();\n }\n\n async function gather(props: {\n location: {\n input: string;\n output: string;\n };\n container: string[];\n from: string;\n to: string;\n }): Promise<void> {\n if (isSamePath(props.from, props.location.output)) return;\n\n for (const file of await fs.promises.readdir(props.from)) {\n const next: string = path.join(props.from, file);\n const stat: fs.Stats = await fs.promises.stat(next);\n\n if (stat.isDirectory()) {\n await gather({\n location: props.location,\n container: props.container,\n from: next,\n to: path.join(props.to, file),\n });\n continue;\n }\n if (isSupportedExtension(file)) {\n props.container.push(next);\n }\n }\n }\n\n function isSupportedExtension(filename: string): boolean {\n const normalized: string = isCaseSensitive()\n ? filename\n : filename.toLowerCase();\n return TS_PATTERN.test(normalized) && !DTS_PATTERN.test(normalized);\n }\n\n function isDeclarationFile(filename: string): boolean {\n const normalized: string = isCaseSensitive()\n ? filename\n : filename.toLowerCase();\n return DTS_PATTERN.test(normalized);\n }\n\n function formatOutput(output: string): string {\n return output.startsWith(\"// @ts-nocheck\")\n ? output\n : `// @ts-nocheck\\n${output}`;\n }\n\n function indexTransformedOutputs(\n outputs: Record<string, string>,\n ): Map<string, string> {\n const map: Map<string, string> = new Map();\n for (const [file, output] of Object.entries(outputs)) {\n map.set(projectFileKey(file), output);\n }\n return map;\n }\n\n function getTransformedOutput(props: {\n cwd: string;\n entry: IInputFile;\n outputByKey: Map<string, string>;\n }): string | undefined {\n const output = props.outputByKey.get(\n projectFileKey(projectKey(props.cwd, props.entry.file)),\n );\n if (output !== undefined) {\n return output;\n }\n\n const real: string = resolveRealPath(props.entry.file);\n if (\n isSamePath(real, props.entry.file) ||\n isSameOrChildPath(real, props.cwd) === false\n ) {\n return undefined;\n }\n return props.outputByKey.get(projectFileKey(projectKey(props.cwd, real)));\n }\n\n function projectKey(root: string, file: string): string {\n return path.relative(root, file).replace(/\\\\/g, \"/\");\n }\n\n function projectFileKey(file: string): string {\n return isCaseSensitive() ? file : file.toLowerCase();\n }\n\n function resolveRealPath(file: string): string {\n try {\n return fs.realpathSync(file);\n } catch {\n return file;\n }\n }\n\n function isSamePath(x: string, y: string): boolean {\n return filesystemKey(x) === filesystemKey(y);\n }\n\n function isSameOrChildPath(file: string, directory: string): boolean {\n const fileKey: string = filesystemKey(path.resolve(file));\n const directoryKey: string = filesystemKey(path.resolve(directory));\n const directoryPrefix: string = directoryKey.endsWith(path.sep)\n ? directoryKey\n : `${directoryKey}${path.sep}`;\n return fileKey === directoryKey || fileKey.startsWith(directoryPrefix);\n }\n\n function filesystemKey(file: string): string {\n const normalized: string = path.normalize(file);\n return isCaseSensitive() ? normalized : normalized.toLowerCase();\n }\n\n function isCaseSensitive(): boolean {\n return process.platform !== \"win32\" && process.platform !== \"darwin\";\n }\n\n function isMissingFileError(exp: unknown): boolean {\n return (\n typeof exp === \"object\" &&\n exp !== null &&\n \"code\" in exp &&\n exp.code === \"ENOENT\"\n );\n }\n\n function fileIdentityKey(stat: fs.Stats): string {\n return `${stat.dev}:${stat.ino}`;\n }\n\n function formatDiagnostics(diagnostics: ITtscCompilerDiagnostic[]): string {\n return diagnostics.length === 0\n ? \"transformation failed\"\n : diagnostics\n .map((diag) =>\n [\n diag.file ?? \"ttsc\",\n diag.line === undefined\n ? undefined\n : `${diag.line}:${diag.character ?? 1}`,\n diag.messageText,\n ]\n .filter((part) => part !== undefined && part !== \"\")\n .join(\": \"),\n )\n .join(\"\\n\");\n }\n\n function formatUnknownError(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return error.message;\n }\n return String(error);\n }\n}\n\nconst TS_PATTERN = /\\.[cm]?tsx?$/;\nconst DTS_PATTERN = /\\.d\\.[cm]?tsx?$/;\n"],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
var _a, _b;
|
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const packageRoot =
|
|
8
|
-
const nativeProject =
|
|
9
|
-
const nativeEntrypoint =
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const packageRoot = node_path_1.default.resolve(node_path_1.default.dirname(node_path_1.default.resolve((_a = process.argv[1]) !== null && _a !== void 0 ? _a : "")), "..", "..", "..");
|
|
11
|
+
const nativeProject = node_path_1.default.resolve(packageRoot, "native");
|
|
12
|
+
const nativeEntrypoint = node_path_1.default.resolve(nativeProject, "cmd", "ttsc-typia", "main.go");
|
|
10
13
|
const command = process.platform === "win32" ? "go.exe" : "go";
|
|
11
14
|
const invocationCwd = process.cwd();
|
|
12
15
|
const argv = [...process.argv.slice(2)];
|
|
@@ -20,13 +23,13 @@ if (argv.length > 0 &&
|
|
|
20
23
|
!argv.some((value) => value === "--cwd" || value.startsWith("--cwd="))) {
|
|
21
24
|
argv.push(`--cwd=${invocationCwd}`);
|
|
22
25
|
}
|
|
23
|
-
const hasSourceEntrypoint =
|
|
26
|
+
const hasSourceEntrypoint = node_fs_1.default.existsSync(nativeEntrypoint);
|
|
24
27
|
if (!hasSourceEntrypoint) {
|
|
25
28
|
process.stderr.write("ttsc-typia: backend source is missing. Expected native/cmd/ttsc-typia/main.go inside the typia package.\n");
|
|
26
29
|
process.exitCode = 1;
|
|
27
30
|
}
|
|
28
31
|
else {
|
|
29
|
-
const result = spawnSync(command, ["run", "./cmd/ttsc-typia", ...argv], {
|
|
32
|
+
const result = (0, node_child_process_1.spawnSync)(command, ["run", "./cmd/ttsc-typia", ...argv], {
|
|
30
33
|
cwd: nativeProject,
|
|
31
34
|
env: process.env,
|
|
32
35
|
stdio: "inherit",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttsc.js","sourceRoot":"","sources":["../../../src/executable/generate/ttsc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ttsc.js","sourceRoot":"","sources":["../../../src/executable/generate/ttsc.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA+C;AAC/C,sDAAyB;AACzB,0DAA6B;AAE7B,MAAM,WAAW,GAAG,mBAAI,CAAC,OAAO,CAC9B,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,OAAO,OAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC,EACjD,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;AACF,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,mBAAI,CAAC,OAAO,CACnC,aAAa,EACb,KAAK,EACL,YAAY,EACZ,SAAS,CACV,CAAC;AACF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AACpC,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAExC,IACE,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,IAAI;IAChD,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW;IACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAC5E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3B,CAAC;AAED,IACE,IAAI,CAAC,MAAM,GAAG,CAAC;IACf,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;IAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EACtE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,mBAAmB,GAAG,iBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAE5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2GAA2G,CAC5G,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,EAAE;QACtE,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CACxF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,QAAQ,SAAG,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,WAAmB;IACnC,OAAO,CACL,WAAW,KAAK,OAAO;QACvB,WAAW,KAAK,OAAO;QACvB,WAAW,KAAK,WAAW;QAC3B,WAAW,KAAK,IAAI;QACpB,WAAW,KAAK,WAAW,CAC5B,CAAC;AACJ,CAAC"}
|