typia 15.0.0 → 15.1.0
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.d.ts +20 -4
- package/lib/TypeGuardError.mjs.map +1 -1
- package/lib/basic.d.ts +787 -0
- package/lib/basic.js +104 -0
- package/lib/basic.js.map +1 -0
- package/lib/basic.mjs +86 -0
- package/lib/basic.mjs.map +1 -0
- package/lib/compare.d.ts +21 -0
- package/lib/compare.js.map +1 -1
- package/lib/compare.mjs.map +1 -1
- package/lib/functional.d.ts +42 -0
- package/lib/functional.js.map +1 -1
- package/lib/functional.mjs.map +1 -1
- package/lib/http.d.ts +124 -24
- package/lib/http.js.map +1 -1
- package/lib/http.mjs.map +1 -1
- package/lib/index.mjs +2 -1
- package/lib/index.mjs.map +1 -1
- package/lib/internal/_IProtobufWriter.d.ts +115 -0
- package/lib/internal/_ProtobufReader.d.ts +159 -1
- package/lib/internal/_ProtobufReader.js +159 -1
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +159 -1
- package/lib/internal/_ProtobufReader.mjs.map +1 -1
- package/lib/internal/_ProtobufSizer.d.ts +135 -4
- package/lib/internal/_ProtobufSizer.js +134 -2
- package/lib/internal/_ProtobufSizer.js.map +1 -1
- package/lib/internal/_ProtobufSizer.mjs +133 -2
- package/lib/internal/_ProtobufSizer.mjs.map +1 -1
- package/lib/internal/_ProtobufWriter.d.ts +151 -0
- package/lib/internal/_ProtobufWriter.js +154 -1
- package/lib/internal/_ProtobufWriter.js.map +1 -1
- package/lib/internal/_ProtobufWriter.mjs +153 -2
- package/lib/internal/_ProtobufWriter.mjs.map +1 -1
- package/lib/internal/_accessExpressionAsString.d.ts +11 -0
- package/lib/internal/_accessExpressionAsString.js +11 -0
- package/lib/internal/_accessExpressionAsString.js.map +1 -1
- package/lib/internal/_accessExpressionAsString.mjs +11 -0
- package/lib/internal/_accessExpressionAsString.mjs.map +1 -1
- package/lib/internal/_assertGuard.d.ts +12 -0
- package/lib/internal/_assertGuard.js +12 -0
- package/lib/internal/_assertGuard.js.map +1 -1
- package/lib/internal/_assertGuard.mjs +12 -0
- package/lib/internal/_assertGuard.mjs.map +1 -1
- package/lib/internal/_coerceLlmArguments.d.ts +10 -0
- package/lib/internal/_coerceLlmArguments.js +10 -0
- package/lib/internal/_coerceLlmArguments.js.map +1 -1
- package/lib/internal/_coerceLlmArguments.mjs +10 -0
- package/lib/internal/_coerceLlmArguments.mjs.map +1 -1
- package/lib/internal/_createLlmEvaluation.js +9 -46
- package/lib/internal/_createLlmEvaluation.js.map +1 -1
- package/lib/internal/_createLlmEvaluation.mjs +7 -35
- package/lib/internal/_createLlmEvaluation.mjs.map +1 -1
- package/lib/internal/_createStandardSchema.d.ts +13 -0
- package/lib/internal/_createStandardSchema.js +13 -0
- package/lib/internal/_createStandardSchema.js.map +1 -1
- package/lib/internal/_createStandardSchema.mjs +13 -0
- package/lib/internal/_createStandardSchema.mjs.map +1 -1
- package/lib/internal/_decimal.d.ts +75 -0
- package/lib/internal/_decimal.js +55 -0
- package/lib/internal/_decimal.js.map +1 -1
- package/lib/internal/_decimal.mjs +55 -0
- package/lib/internal/_decimal.mjs.map +1 -1
- package/lib/internal/_functionalTypeGuardErrorFactory.d.ts +8 -0
- package/lib/internal/_functionalTypeGuardErrorFactory.js +8 -0
- package/lib/internal/_functionalTypeGuardErrorFactory.js.map +1 -1
- package/lib/internal/_functionalTypeGuardErrorFactory.mjs +8 -0
- package/lib/internal/_functionalTypeGuardErrorFactory.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadArray.d.ts +9 -0
- package/lib/internal/_httpFormDataReadArray.js +9 -0
- package/lib/internal/_httpFormDataReadArray.js.map +1 -1
- package/lib/internal/_httpFormDataReadArray.mjs +9 -0
- package/lib/internal/_httpFormDataReadArray.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBigint.d.ts +12 -0
- package/lib/internal/_httpFormDataReadBigint.js +19 -5
- package/lib/internal/_httpFormDataReadBigint.js.map +1 -1
- package/lib/internal/_httpFormDataReadBigint.mjs +13 -1
- package/lib/internal/_httpFormDataReadBigint.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBlob.d.ts +11 -0
- package/lib/internal/_httpFormDataReadBlob.js +11 -0
- package/lib/internal/_httpFormDataReadBlob.js.map +1 -1
- package/lib/internal/_httpFormDataReadBlob.mjs +11 -0
- package/lib/internal/_httpFormDataReadBlob.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBoolean.d.ts +11 -0
- package/lib/internal/_httpFormDataReadBoolean.js +23 -10
- package/lib/internal/_httpFormDataReadBoolean.js.map +1 -1
- package/lib/internal/_httpFormDataReadBoolean.mjs +12 -1
- package/lib/internal/_httpFormDataReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadFile.d.ts +11 -0
- package/lib/internal/_httpFormDataReadFile.js +11 -0
- package/lib/internal/_httpFormDataReadFile.js.map +1 -1
- package/lib/internal/_httpFormDataReadFile.mjs +11 -0
- package/lib/internal/_httpFormDataReadFile.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadNumber.d.ts +11 -0
- package/lib/internal/_httpFormDataReadNumber.js +18 -5
- package/lib/internal/_httpFormDataReadNumber.js.map +1 -1
- package/lib/internal/_httpFormDataReadNumber.mjs +12 -1
- package/lib/internal/_httpFormDataReadNumber.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadString.d.ts +14 -1
- package/lib/internal/_httpFormDataReadString.js +15 -2
- package/lib/internal/_httpFormDataReadString.js.map +1 -1
- package/lib/internal/_httpFormDataReadString.mjs +14 -1
- package/lib/internal/_httpFormDataReadString.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadBigint.d.ts +11 -0
- package/lib/internal/_httpHeaderReadBigint.js +16 -1
- package/lib/internal/_httpHeaderReadBigint.js.map +1 -1
- package/lib/internal/_httpHeaderReadBigint.mjs +13 -1
- package/lib/internal/_httpHeaderReadBigint.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadBoolean.d.ts +12 -0
- package/lib/internal/_httpHeaderReadBoolean.js +12 -0
- package/lib/internal/_httpHeaderReadBoolean.js.map +1 -1
- package/lib/internal/_httpHeaderReadBoolean.mjs +12 -0
- package/lib/internal/_httpHeaderReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadNumber.d.ts +11 -0
- package/lib/internal/_httpHeaderReadNumber.js +16 -1
- package/lib/internal/_httpHeaderReadNumber.js.map +1 -1
- package/lib/internal/_httpHeaderReadNumber.mjs +13 -1
- package/lib/internal/_httpHeaderReadNumber.mjs.map +1 -1
- package/lib/internal/_httpParameterReadBigint.d.ts +11 -0
- package/lib/internal/_httpParameterReadBigint.js +15 -0
- package/lib/internal/_httpParameterReadBigint.js.map +1 -1
- package/lib/internal/_httpParameterReadBigint.mjs +12 -0
- package/lib/internal/_httpParameterReadBigint.mjs.map +1 -1
- package/lib/internal/_httpParameterReadBoolean.d.ts +11 -0
- package/lib/internal/_httpParameterReadBoolean.js +11 -0
- package/lib/internal/_httpParameterReadBoolean.js.map +1 -1
- package/lib/internal/_httpParameterReadBoolean.mjs +11 -0
- package/lib/internal/_httpParameterReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpParameterReadNumber.d.ts +11 -0
- package/lib/internal/_httpParameterReadNumber.js +15 -0
- package/lib/internal/_httpParameterReadNumber.js.map +1 -1
- package/lib/internal/_httpParameterReadNumber.mjs +12 -0
- package/lib/internal/_httpParameterReadNumber.mjs.map +1 -1
- package/lib/internal/_httpParameterReadString.d.ts +14 -1
- package/lib/internal/_httpParameterReadString.js +14 -1
- package/lib/internal/_httpParameterReadString.js.map +1 -1
- package/lib/internal/_httpParameterReadString.mjs +14 -1
- package/lib/internal/_httpParameterReadString.mjs.map +1 -1
- package/lib/internal/_httpQueryParseURLSearchParams.d.ts +14 -0
- package/lib/internal/_httpQueryParseURLSearchParams.js +14 -0
- package/lib/internal/_httpQueryParseURLSearchParams.js.map +1 -1
- package/lib/internal/_httpQueryParseURLSearchParams.mjs +14 -0
- package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
- package/lib/internal/_httpQueryReadArray.d.ts +9 -0
- package/lib/internal/_httpQueryReadArray.js +9 -0
- package/lib/internal/_httpQueryReadArray.js.map +1 -1
- package/lib/internal/_httpQueryReadArray.mjs +9 -0
- package/lib/internal/_httpQueryReadArray.mjs.map +1 -1
- package/lib/internal/_httpQueryReadBigint.d.ts +11 -0
- package/lib/internal/_httpQueryReadBigint.js +19 -1
- package/lib/internal/_httpQueryReadBigint.js.map +1 -1
- package/lib/internal/_httpQueryReadBigint.mjs +12 -1
- package/lib/internal/_httpQueryReadBigint.mjs.map +1 -1
- package/lib/internal/_httpQueryReadBoolean.d.ts +12 -0
- package/lib/internal/_httpQueryReadBoolean.js +16 -1
- package/lib/internal/_httpQueryReadBoolean.js.map +1 -1
- package/lib/internal/_httpQueryReadBoolean.mjs +13 -1
- package/lib/internal/_httpQueryReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpQueryReadNumber.d.ts +11 -0
- package/lib/internal/_httpQueryReadNumber.js +19 -1
- package/lib/internal/_httpQueryReadNumber.js.map +1 -1
- package/lib/internal/_httpQueryReadNumber.mjs +12 -1
- package/lib/internal/_httpQueryReadNumber.mjs.map +1 -1
- package/lib/internal/_httpQueryReadString.d.ts +14 -1
- package/lib/internal/_httpQueryReadString.js +14 -1
- package/lib/internal/_httpQueryReadString.js.map +1 -1
- package/lib/internal/_httpQueryReadString.mjs +14 -1
- package/lib/internal/_httpQueryReadString.mjs.map +1 -1
- package/lib/internal/_isBetween.d.ts +8 -0
- package/lib/internal/_isBetween.js +8 -0
- package/lib/internal/_isBetween.js.map +1 -1
- package/lib/internal/_isBetween.mjs +8 -0
- package/lib/internal/_isBetween.mjs.map +1 -1
- package/lib/internal/_isBigintString.d.ts +11 -0
- package/lib/internal/_isBigintString.js +11 -0
- package/lib/internal/_isBigintString.js.map +1 -1
- package/lib/internal/_isBigintString.mjs +11 -0
- package/lib/internal/_isBigintString.mjs.map +1 -1
- package/lib/internal/_isFormatByte.d.ts +12 -0
- package/lib/internal/_isFormatByte.js +12 -0
- package/lib/internal/_isFormatByte.js.map +1 -1
- package/lib/internal/_isFormatByte.mjs +12 -0
- package/lib/internal/_isFormatByte.mjs.map +1 -1
- package/lib/internal/_isFormatDate.d.ts +11 -0
- package/lib/internal/_isFormatDate.js +11 -0
- package/lib/internal/_isFormatDate.js.map +1 -1
- package/lib/internal/_isFormatDate.mjs +11 -0
- package/lib/internal/_isFormatDate.mjs.map +1 -1
- package/lib/internal/_isFormatDateTime.d.ts +13 -0
- package/lib/internal/_isFormatDateTime.js +13 -0
- package/lib/internal/_isFormatDateTime.js.map +1 -1
- package/lib/internal/_isFormatDateTime.mjs +13 -0
- package/lib/internal/_isFormatDateTime.mjs.map +1 -1
- package/lib/internal/_isFormatDuration.d.ts +13 -0
- package/lib/internal/_isFormatDuration.js +13 -0
- package/lib/internal/_isFormatDuration.js.map +1 -1
- package/lib/internal/_isFormatDuration.mjs +13 -0
- package/lib/internal/_isFormatDuration.mjs.map +1 -1
- package/lib/internal/_isFormatEmail.d.ts +13 -0
- package/lib/internal/_isFormatEmail.js +13 -0
- package/lib/internal/_isFormatEmail.js.map +1 -1
- package/lib/internal/_isFormatEmail.mjs +13 -0
- package/lib/internal/_isFormatEmail.mjs.map +1 -1
- package/lib/internal/_isFormatHostname.d.ts +12 -0
- package/lib/internal/_isFormatHostname.js +12 -0
- package/lib/internal/_isFormatHostname.js.map +1 -1
- package/lib/internal/_isFormatHostname.mjs +12 -0
- package/lib/internal/_isFormatHostname.mjs.map +1 -1
- package/lib/internal/_isFormatIdnEmail.d.ts +14 -0
- package/lib/internal/_isFormatIdnEmail.js +14 -0
- package/lib/internal/_isFormatIdnEmail.js.map +1 -1
- package/lib/internal/_isFormatIdnEmail.mjs +14 -0
- package/lib/internal/_isFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_isFormatIdnHostname.d.ts +14 -0
- package/lib/internal/_isFormatIdnHostname.js +14 -0
- package/lib/internal/_isFormatIdnHostname.js.map +1 -1
- package/lib/internal/_isFormatIdnHostname.mjs +14 -0
- package/lib/internal/_isFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_isFormatIpv4.d.ts +11 -0
- package/lib/internal/_isFormatIpv4.js +11 -0
- package/lib/internal/_isFormatIpv4.js.map +1 -1
- package/lib/internal/_isFormatIpv4.mjs +11 -0
- package/lib/internal/_isFormatIpv4.mjs.map +1 -1
- package/lib/internal/_isFormatIpv6.d.ts +12 -0
- package/lib/internal/_isFormatIpv6.js +12 -0
- package/lib/internal/_isFormatIpv6.js.map +1 -1
- package/lib/internal/_isFormatIpv6.mjs +12 -0
- package/lib/internal/_isFormatIpv6.mjs.map +1 -1
- package/lib/internal/_isFormatIri.d.ts +11 -0
- package/lib/internal/_isFormatIri.js +11 -0
- package/lib/internal/_isFormatIri.js.map +1 -1
- package/lib/internal/_isFormatIri.mjs +11 -0
- package/lib/internal/_isFormatIri.mjs.map +1 -1
- package/lib/internal/_isFormatIriReference.d.ts +13 -0
- package/lib/internal/_isFormatIriReference.js +13 -0
- package/lib/internal/_isFormatIriReference.js.map +1 -1
- package/lib/internal/_isFormatIriReference.mjs +13 -0
- package/lib/internal/_isFormatIriReference.mjs.map +1 -1
- package/lib/internal/_isFormatJsonPointer.d.ts +11 -0
- package/lib/internal/_isFormatJsonPointer.js +11 -0
- package/lib/internal/_isFormatJsonPointer.js.map +1 -1
- package/lib/internal/_isFormatJsonPointer.mjs +11 -0
- package/lib/internal/_isFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_isFormatPassword.d.ts +11 -0
- package/lib/internal/_isFormatPassword.js +11 -0
- package/lib/internal/_isFormatPassword.js.map +1 -1
- package/lib/internal/_isFormatPassword.mjs +11 -0
- package/lib/internal/_isFormatPassword.mjs.map +1 -1
- package/lib/internal/_isFormatRegex.d.ts +11 -0
- package/lib/internal/_isFormatRegex.js +11 -0
- package/lib/internal/_isFormatRegex.js.map +1 -1
- package/lib/internal/_isFormatRegex.mjs +11 -0
- package/lib/internal/_isFormatRegex.mjs.map +1 -1
- package/lib/internal/_isFormatRelativeJsonPointer.d.ts +11 -0
- package/lib/internal/_isFormatRelativeJsonPointer.js +11 -0
- package/lib/internal/_isFormatRelativeJsonPointer.js.map +1 -1
- package/lib/internal/_isFormatRelativeJsonPointer.mjs +11 -0
- package/lib/internal/_isFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_isFormatTime.d.ts +12 -0
- package/lib/internal/_isFormatTime.js +12 -0
- package/lib/internal/_isFormatTime.js.map +1 -1
- package/lib/internal/_isFormatTime.mjs +12 -0
- package/lib/internal/_isFormatTime.mjs.map +1 -1
- package/lib/internal/_isFormatUri.d.ts +15 -0
- package/lib/internal/_isFormatUri.js +15 -0
- package/lib/internal/_isFormatUri.js.map +1 -1
- package/lib/internal/_isFormatUri.mjs +15 -0
- package/lib/internal/_isFormatUri.mjs.map +1 -1
- package/lib/internal/_isFormatUriReference.d.ts +11 -0
- package/lib/internal/_isFormatUriReference.js +11 -0
- package/lib/internal/_isFormatUriReference.js.map +1 -1
- package/lib/internal/_isFormatUriReference.mjs +11 -0
- package/lib/internal/_isFormatUriReference.mjs.map +1 -1
- package/lib/internal/_isFormatUriTemplate.d.ts +13 -0
- package/lib/internal/_isFormatUriTemplate.js +14 -1
- package/lib/internal/_isFormatUriTemplate.js.map +1 -1
- package/lib/internal/_isFormatUriTemplate.mjs +14 -1
- package/lib/internal/_isFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_isFormatUrl.d.ts +15 -0
- package/lib/internal/_isFormatUrl.js +15 -0
- package/lib/internal/_isFormatUrl.js.map +1 -1
- package/lib/internal/_isFormatUrl.mjs +15 -0
- package/lib/internal/_isFormatUrl.mjs.map +1 -1
- package/lib/internal/_isFormatUuid.d.ts +11 -0
- package/lib/internal/_isFormatUuid.js +11 -0
- package/lib/internal/_isFormatUuid.js.map +1 -1
- package/lib/internal/_isFormatUuid.mjs +11 -0
- package/lib/internal/_isFormatUuid.mjs.map +1 -1
- package/lib/internal/_isMultipleOf.d.ts +11 -0
- package/lib/internal/_isMultipleOf.js +11 -0
- package/lib/internal/_isMultipleOf.js.map +1 -1
- package/lib/internal/_isMultipleOf.mjs +11 -0
- package/lib/internal/_isMultipleOf.mjs.map +1 -1
- package/lib/internal/_isTypeFloat.d.ts +9 -0
- package/lib/internal/_isTypeFloat.js +9 -0
- package/lib/internal/_isTypeFloat.js.map +1 -1
- package/lib/internal/_isTypeFloat.mjs +9 -0
- package/lib/internal/_isTypeFloat.mjs.map +1 -1
- package/lib/internal/_isTypeInt16.d.ts +8 -0
- package/lib/internal/_isTypeInt16.js +8 -0
- package/lib/internal/_isTypeInt16.js.map +1 -1
- package/lib/internal/_isTypeInt16.mjs +8 -0
- package/lib/internal/_isTypeInt16.mjs.map +1 -1
- package/lib/internal/_isTypeInt32.d.ts +8 -0
- package/lib/internal/_isTypeInt32.js +8 -0
- package/lib/internal/_isTypeInt32.js.map +1 -1
- package/lib/internal/_isTypeInt32.mjs +8 -0
- package/lib/internal/_isTypeInt32.mjs.map +1 -1
- package/lib/internal/_isTypeInt64.d.ts +11 -0
- package/lib/internal/_isTypeInt64.js +11 -0
- package/lib/internal/_isTypeInt64.js.map +1 -1
- package/lib/internal/_isTypeInt64.mjs +11 -0
- package/lib/internal/_isTypeInt64.mjs.map +1 -1
- package/lib/internal/_isTypeInt64Bigint.d.ts +8 -0
- package/lib/internal/_isTypeInt64Bigint.js +8 -0
- package/lib/internal/_isTypeInt64Bigint.js.map +1 -1
- package/lib/internal/_isTypeInt64Bigint.mjs +8 -0
- package/lib/internal/_isTypeInt64Bigint.mjs.map +1 -1
- package/lib/internal/_isTypeInt8.d.ts +8 -0
- package/lib/internal/_isTypeInt8.js +8 -0
- package/lib/internal/_isTypeInt8.js.map +1 -1
- package/lib/internal/_isTypeInt8.mjs +8 -0
- package/lib/internal/_isTypeInt8.mjs.map +1 -1
- package/lib/internal/_isTypeUint16.d.ts +8 -0
- package/lib/internal/_isTypeUint16.js +8 -0
- package/lib/internal/_isTypeUint16.js.map +1 -1
- package/lib/internal/_isTypeUint16.mjs +8 -0
- package/lib/internal/_isTypeUint16.mjs.map +1 -1
- package/lib/internal/_isTypeUint32.d.ts +8 -0
- package/lib/internal/_isTypeUint32.js +8 -0
- package/lib/internal/_isTypeUint32.js.map +1 -1
- package/lib/internal/_isTypeUint32.mjs +8 -0
- package/lib/internal/_isTypeUint32.mjs.map +1 -1
- package/lib/internal/_isTypeUint64.d.ts +11 -0
- package/lib/internal/_isTypeUint64.js +11 -0
- package/lib/internal/_isTypeUint64.js.map +1 -1
- package/lib/internal/_isTypeUint64.mjs +11 -0
- package/lib/internal/_isTypeUint64.mjs.map +1 -1
- package/lib/internal/_isTypeUint64Bigint.d.ts +8 -0
- package/lib/internal/_isTypeUint64Bigint.js +8 -0
- package/lib/internal/_isTypeUint64Bigint.js.map +1 -1
- package/lib/internal/_isTypeUint64Bigint.mjs +8 -0
- package/lib/internal/_isTypeUint64Bigint.mjs.map +1 -1
- package/lib/internal/_isTypeUint8.d.ts +8 -0
- package/lib/internal/_isTypeUint8.js +8 -0
- package/lib/internal/_isTypeUint8.js.map +1 -1
- package/lib/internal/_isTypeUint8.mjs +8 -0
- package/lib/internal/_isTypeUint8.mjs.map +1 -1
- package/lib/internal/_isUniqueItems.d.ts +17 -0
- package/lib/internal/_isUniqueItems.js +58 -0
- package/lib/internal/_isUniqueItems.js.map +1 -1
- package/lib/internal/_isUniqueItems.mjs +41 -0
- package/lib/internal/_isUniqueItems.mjs.map +1 -1
- package/lib/internal/_jsonStringifyArray.js +2 -0
- package/lib/internal/_jsonStringifyArray.js.map +1 -1
- package/lib/internal/_jsonStringifyArray.mjs +2 -0
- package/lib/internal/_jsonStringifyArray.mjs.map +1 -1
- package/lib/internal/_jsonStringifyElement.js +2 -0
- package/lib/internal/_jsonStringifyElement.js.map +1 -1
- package/lib/internal/_jsonStringifyElement.mjs +2 -0
- package/lib/internal/_jsonStringifyElement.mjs.map +1 -1
- package/lib/internal/_jsonStringifyNumber.d.ts +9 -0
- package/lib/internal/_jsonStringifyNumber.js +9 -0
- package/lib/internal/_jsonStringifyNumber.js.map +1 -1
- package/lib/internal/_jsonStringifyNumber.mjs +9 -0
- package/lib/internal/_jsonStringifyNumber.mjs.map +1 -1
- package/lib/internal/_jsonStringifyProperty.js +3 -1
- package/lib/internal/_jsonStringifyProperty.js.map +1 -1
- package/lib/internal/_jsonStringifyProperty.mjs +3 -1
- package/lib/internal/_jsonStringifyProperty.mjs.map +1 -1
- package/lib/internal/_jsonStringifyRest.d.ts +11 -0
- package/lib/internal/_jsonStringifyRest.js +11 -0
- package/lib/internal/_jsonStringifyRest.js.map +1 -1
- package/lib/internal/_jsonStringifyRest.mjs +11 -0
- package/lib/internal/_jsonStringifyRest.mjs.map +1 -1
- package/lib/internal/_jsonStringifyString.d.ts +13 -0
- package/lib/internal/_jsonStringifyString.js +13 -0
- package/lib/internal/_jsonStringifyString.js.map +1 -1
- package/lib/internal/_jsonStringifyString.mjs +13 -0
- package/lib/internal/_jsonStringifyString.mjs.map +1 -1
- package/lib/internal/_jsonStringifyTail.d.ts +8 -0
- package/lib/internal/_jsonStringifyTail.js +8 -0
- package/lib/internal/_jsonStringifyTail.js.map +1 -1
- package/lib/internal/_jsonStringifyTail.mjs +8 -0
- package/lib/internal/_jsonStringifyTail.mjs.map +1 -1
- package/lib/internal/_llmApplicationFinalize.d.ts +13 -0
- package/lib/internal/_llmApplicationFinalize.js +13 -0
- package/lib/internal/_llmApplicationFinalize.js.map +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs +13 -0
- package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
- package/lib/internal/_notationAny.d.ts +14 -0
- package/lib/internal/_notationAny.js +14 -0
- package/lib/internal/_notationAny.js.map +1 -1
- package/lib/internal/_notationAny.mjs +14 -0
- package/lib/internal/_notationAny.mjs.map +1 -1
- package/lib/internal/_notationAssign.d.ts +12 -0
- package/lib/internal/_notationAssign.js +12 -0
- package/lib/internal/_notationAssign.js.map +1 -1
- package/lib/internal/_notationAssign.mjs +12 -0
- package/lib/internal/_notationAssign.mjs.map +1 -1
- package/lib/internal/_notationKebab.d.ts +9 -0
- package/lib/internal/_notationKebab.js +9 -0
- package/lib/internal/_notationKebab.js.map +1 -1
- package/lib/internal/_notationKebab.mjs +9 -0
- package/lib/internal/_notationKebab.mjs.map +1 -1
- package/lib/internal/_notationKeyCollision.d.ts +8 -0
- package/lib/internal/_notationKeyCollision.js +8 -0
- package/lib/internal/_notationKeyCollision.js.map +1 -1
- package/lib/internal/_notationKeyCollision.mjs +8 -0
- package/lib/internal/_notationKeyCollision.mjs.map +1 -1
- package/lib/internal/_notationSnake.d.ts +12 -0
- package/lib/internal/_notationSnake.js +12 -0
- package/lib/internal/_notationSnake.js.map +1 -1
- package/lib/internal/_notationSnake.mjs +12 -0
- package/lib/internal/_notationSnake.mjs.map +1 -1
- package/lib/internal/_parseLlmArguments.d.ts +12 -0
- package/lib/internal/_parseLlmArguments.js +12 -0
- package/lib/internal/_parseLlmArguments.js.map +1 -1
- package/lib/internal/_parseLlmArguments.mjs +12 -0
- package/lib/internal/_parseLlmArguments.mjs.map +1 -1
- package/lib/internal/_plainCloneAny.d.ts +15 -0
- package/lib/internal/_plainCloneAny.js +15 -0
- package/lib/internal/_plainCloneAny.js.map +1 -1
- package/lib/internal/_plainCloneAny.mjs +15 -0
- package/lib/internal/_plainCloneAny.mjs.map +1 -1
- package/lib/internal/_randomArray.d.ts +19 -1
- package/lib/internal/_randomArray.js +32 -14
- package/lib/internal/_randomArray.js.map +1 -1
- package/lib/internal/_randomArray.mjs +24 -6
- package/lib/internal/_randomArray.mjs.map +1 -1
- package/lib/internal/_randomBigint.d.ts +17 -1
- package/lib/internal/_randomBigint.js +95 -2
- package/lib/internal/_randomBigint.js.map +1 -1
- package/lib/internal/_randomBigint.mjs +75 -2
- package/lib/internal/_randomBigint.mjs.map +1 -1
- package/lib/internal/_randomBoolean.d.ts +8 -0
- package/lib/internal/_randomBoolean.js +8 -0
- package/lib/internal/_randomBoolean.js.map +1 -1
- package/lib/internal/_randomBoolean.mjs +8 -0
- package/lib/internal/_randomBoolean.mjs.map +1 -1
- package/lib/internal/_randomFormatByte.d.ts +8 -0
- package/lib/internal/_randomFormatByte.js +8 -0
- package/lib/internal/_randomFormatByte.js.map +1 -1
- package/lib/internal/_randomFormatByte.mjs +8 -0
- package/lib/internal/_randomFormatByte.mjs.map +1 -1
- package/lib/internal/_randomFormatDate.d.ts +10 -0
- package/lib/internal/_randomFormatDate.js +10 -0
- package/lib/internal/_randomFormatDate.js.map +1 -1
- package/lib/internal/_randomFormatDate.mjs +10 -0
- package/lib/internal/_randomFormatDate.mjs.map +1 -1
- package/lib/internal/_randomFormatDatetime.d.ts +10 -0
- package/lib/internal/_randomFormatDatetime.js +10 -0
- package/lib/internal/_randomFormatDatetime.js.map +1 -1
- package/lib/internal/_randomFormatDatetime.mjs +10 -0
- package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
- package/lib/internal/_randomFormatDuration.d.ts +8 -0
- package/lib/internal/_randomFormatDuration.js +8 -0
- package/lib/internal/_randomFormatDuration.js.map +1 -1
- package/lib/internal/_randomFormatDuration.mjs +8 -0
- package/lib/internal/_randomFormatDuration.mjs.map +1 -1
- package/lib/internal/_randomFormatEmail.d.ts +8 -0
- package/lib/internal/_randomFormatEmail.js +8 -0
- package/lib/internal/_randomFormatEmail.js.map +1 -1
- package/lib/internal/_randomFormatEmail.mjs +8 -0
- package/lib/internal/_randomFormatEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatHostname.d.ts +15 -1
- package/lib/internal/_randomFormatHostname.js +15 -1
- package/lib/internal/_randomFormatHostname.js.map +1 -1
- package/lib/internal/_randomFormatHostname.mjs +15 -1
- package/lib/internal/_randomFormatHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.d.ts +13 -0
- package/lib/internal/_randomFormatIdnEmail.js +13 -0
- package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.mjs +13 -0
- package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.d.ts +12 -0
- package/lib/internal/_randomFormatIdnHostname.js +12 -0
- package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.mjs +12 -0
- package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv4.d.ts +8 -0
- package/lib/internal/_randomFormatIpv4.js +8 -0
- package/lib/internal/_randomFormatIpv4.js.map +1 -1
- package/lib/internal/_randomFormatIpv4.mjs +8 -0
- package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv6.d.ts +8 -0
- package/lib/internal/_randomFormatIpv6.js +8 -0
- package/lib/internal/_randomFormatIpv6.js.map +1 -1
- package/lib/internal/_randomFormatIpv6.mjs +8 -0
- package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
- package/lib/internal/_randomFormatIri.d.ts +11 -0
- package/lib/internal/_randomFormatIri.js +11 -0
- package/lib/internal/_randomFormatIri.js.map +1 -1
- package/lib/internal/_randomFormatIri.mjs +11 -0
- package/lib/internal/_randomFormatIri.mjs.map +1 -1
- package/lib/internal/_randomFormatIriReference.d.ts +12 -0
- package/lib/internal/_randomFormatIriReference.js +12 -0
- package/lib/internal/_randomFormatIriReference.js.map +1 -1
- package/lib/internal/_randomFormatIriReference.mjs +12 -0
- package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.d.ts +12 -0
- package/lib/internal/_randomFormatJsonPointer.js +12 -0
- package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.mjs +12 -0
- package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatPassword.d.ts +13 -0
- package/lib/internal/_randomFormatPassword.js +13 -0
- package/lib/internal/_randomFormatPassword.js.map +1 -1
- package/lib/internal/_randomFormatPassword.mjs +13 -0
- package/lib/internal/_randomFormatPassword.mjs.map +1 -1
- package/lib/internal/_randomFormatRegex.d.ts +8 -0
- package/lib/internal/_randomFormatRegex.js +8 -0
- package/lib/internal/_randomFormatRegex.js.map +1 -1
- package/lib/internal/_randomFormatRegex.mjs +8 -0
- package/lib/internal/_randomFormatRegex.mjs.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +8 -0
- package/lib/internal/_randomFormatRelativeJsonPointer.js +8 -0
- package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs +8 -0
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatTime.d.ts +13 -0
- package/lib/internal/_randomFormatTime.js +13 -0
- package/lib/internal/_randomFormatTime.js.map +1 -1
- package/lib/internal/_randomFormatTime.mjs +13 -0
- package/lib/internal/_randomFormatTime.mjs.map +1 -1
- package/lib/internal/_randomFormatUri.d.ts +12 -0
- package/lib/internal/_randomFormatUri.js +12 -0
- package/lib/internal/_randomFormatUri.js.map +1 -1
- package/lib/internal/_randomFormatUri.mjs +12 -0
- package/lib/internal/_randomFormatUri.mjs.map +1 -1
- package/lib/internal/_randomFormatUriReference.d.ts +12 -0
- package/lib/internal/_randomFormatUriReference.js +12 -0
- package/lib/internal/_randomFormatUriReference.js.map +1 -1
- package/lib/internal/_randomFormatUriReference.mjs +12 -0
- package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.d.ts +12 -0
- package/lib/internal/_randomFormatUriTemplate.js +12 -0
- package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs +12 -0
- package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_randomFormatUrl.d.ts +12 -0
- package/lib/internal/_randomFormatUrl.js +12 -0
- package/lib/internal/_randomFormatUrl.js.map +1 -1
- package/lib/internal/_randomFormatUrl.mjs +12 -0
- package/lib/internal/_randomFormatUrl.mjs.map +1 -1
- package/lib/internal/_randomFormatUuid.d.ts +13 -0
- package/lib/internal/_randomFormatUuid.js +13 -0
- package/lib/internal/_randomFormatUuid.js.map +1 -1
- package/lib/internal/_randomFormatUuid.mjs +13 -0
- package/lib/internal/_randomFormatUuid.mjs.map +1 -1
- package/lib/internal/_randomInteger.d.ts +17 -1
- package/lib/internal/_randomInteger.js +74 -23
- package/lib/internal/_randomInteger.js.map +1 -1
- package/lib/internal/_randomInteger.mjs +62 -23
- package/lib/internal/_randomInteger.mjs.map +1 -1
- package/lib/internal/_randomMultiple.d.ts +18 -1
- package/lib/internal/_randomMultiple.js +30 -13
- package/lib/internal/_randomMultiple.js.map +1 -1
- package/lib/internal/_randomMultiple.mjs +30 -13
- package/lib/internal/_randomMultiple.mjs.map +1 -1
- package/lib/internal/_randomNumber.d.ts +17 -1
- package/lib/internal/_randomNumber.js +67 -18
- package/lib/internal/_randomNumber.js.map +1 -1
- package/lib/internal/_randomNumber.mjs +59 -22
- package/lib/internal/_randomNumber.mjs.map +1 -1
- package/lib/internal/_randomPattern.d.ts +12 -0
- package/lib/internal/_randomPattern.js +12 -0
- package/lib/internal/_randomPattern.js.map +1 -1
- package/lib/internal/_randomPattern.mjs +12 -0
- package/lib/internal/_randomPattern.mjs.map +1 -1
- package/lib/internal/_randomPick.d.ts +13 -1
- package/lib/internal/_randomPick.js +15 -3
- package/lib/internal/_randomPick.js.map +1 -1
- package/lib/internal/_randomPick.mjs +15 -3
- package/lib/internal/_randomPick.mjs.map +1 -1
- package/lib/internal/_randomString.d.ts +15 -1
- package/lib/internal/_randomString.js +19 -5
- package/lib/internal/_randomString.js.map +1 -1
- package/lib/internal/_randomString.mjs +19 -5
- package/lib/internal/_randomString.mjs.map +1 -1
- package/lib/internal/_randomStringLength.d.ts +30 -1
- package/lib/internal/_randomStringLength.js +23 -1
- package/lib/internal/_randomStringLength.js.map +1 -1
- package/lib/internal/_randomStringLength.mjs +23 -1
- package/lib/internal/_randomStringLength.mjs.map +1 -1
- package/lib/internal/_stringLength.d.ts +11 -0
- package/lib/internal/_stringLength.js +11 -0
- package/lib/internal/_stringLength.js.map +1 -1
- package/lib/internal/_stringLength.mjs +11 -0
- package/lib/internal/_stringLength.mjs.map +1 -1
- package/lib/internal/_stringLengthGte.d.ts +11 -0
- package/lib/internal/_stringLengthGte.js +11 -0
- package/lib/internal/_stringLengthGte.js.map +1 -1
- package/lib/internal/_stringLengthGte.mjs +11 -0
- package/lib/internal/_stringLengthGte.mjs.map +1 -1
- package/lib/internal/_stringLengthLte.d.ts +11 -0
- package/lib/internal/_stringLengthLte.js +11 -0
- package/lib/internal/_stringLengthLte.js.map +1 -1
- package/lib/internal/_stringLengthLte.mjs +11 -0
- package/lib/internal/_stringLengthLte.mjs.map +1 -1
- package/lib/internal/_throwTypeGuardError.d.ts +9 -0
- package/lib/internal/_throwTypeGuardError.js +9 -0
- package/lib/internal/_throwTypeGuardError.js.map +1 -1
- package/lib/internal/_throwTypeGuardError.mjs +9 -0
- package/lib/internal/_throwTypeGuardError.mjs.map +1 -1
- package/lib/internal/_validateReport.d.ts +15 -0
- package/lib/internal/_validateReport.js +15 -0
- package/lib/internal/_validateReport.js.map +1 -1
- package/lib/internal/_validateReport.mjs +15 -0
- package/lib/internal/_validateReport.mjs.map +1 -1
- package/lib/internal/private/__notationRename.d.ts +5 -0
- package/lib/internal/private/__notationRename.js +5 -0
- package/lib/internal/private/__notationRename.js.map +1 -1
- package/lib/internal/private/__notationRename.mjs +5 -0
- package/lib/internal/private/__notationRename.mjs.map +1 -1
- package/lib/internal/private/__randomComposition.d.ts +27 -3
- package/lib/internal/private/__randomComposition.js +27 -3
- package/lib/internal/private/__randomComposition.js.map +1 -1
- package/lib/internal/private/__randomComposition.mjs +27 -3
- package/lib/internal/private/__randomComposition.mjs.map +1 -1
- package/lib/internal/private/__randomEpoch.d.ts +15 -0
- package/lib/internal/private/__randomEpoch.js +5 -0
- package/lib/internal/private/__randomEpoch.js.map +1 -1
- package/lib/internal/private/__randomEpoch.mjs +5 -0
- package/lib/internal/private/__randomEpoch.mjs.map +1 -1
- package/lib/json.d.ts +49 -14
- package/lib/json.js.map +1 -1
- package/lib/json.mjs.map +1 -1
- package/lib/llm.d.ts +41 -25
- package/lib/llm.js.map +1 -1
- package/lib/llm.mjs.map +1 -1
- package/lib/module.d.ts +1 -702
- package/lib/module.js +1 -101
- package/lib/module.js.map +1 -1
- package/lib/module.mjs +1 -81
- package/lib/module.mjs.map +1 -1
- package/lib/notations.d.ts +60 -0
- package/lib/notations.js.map +1 -1
- package/lib/notations.mjs.map +1 -1
- package/lib/plain.d.ts +38 -0
- package/lib/plain.js.map +1 -1
- package/lib/plain.mjs.map +1 -1
- package/lib/protobuf.d.ts +38 -4
- package/lib/protobuf.js.map +1 -1
- package/lib/protobuf.mjs.map +1 -1
- package/lib/reflect.d.ts +16 -12
- package/lib/reflect.js.map +1 -1
- package/lib/reflect.mjs.map +1 -1
- package/lib/transform.d.ts +17 -0
- package/lib/transform.js +17 -0
- package/lib/transform.js.map +1 -1
- package/lib/transform.mjs +17 -0
- package/lib/transform.mjs.map +1 -1
- package/native/adapter/adapter.go +28 -3
- package/native/adapter/adapter_options_branch_matrix_test.go +39 -34
- package/native/adapter/plugin_options.go +5 -0
- package/native/adapter/plugin_options_payload_matrix_test.go +5 -0
- package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +38 -131
- package/native/cmd/ttsc-typia/assert_guard_factory_contract_test.go +31 -58
- package/native/cmd/ttsc-typia/atomic_intersection_schema_transform_test.go +28 -79
- package/native/cmd/ttsc-typia/bigint_literal_precision_transform_test.go +16 -82
- package/native/cmd/ttsc-typia/build_diagnostics_preserve_details_test.go +41 -0
- package/native/cmd/ttsc-typia/build_no_emit_preserves_analysis_options_test.go +9 -10
- package/native/cmd/ttsc-typia/build_no_emit_transform_diagnostics_test.go +9 -7
- package/native/cmd/ttsc-typia/build_plugin_options_come_from_payload_test.go +9 -11
- package/native/cmd/ttsc-typia/build_transactional_emit_success_test.go +9 -7
- package/native/cmd/ttsc-typia/build_transform_failure_atomicity_test.go +9 -7
- package/native/cmd/ttsc-typia/callable_interface_function_semantics_transform_test.go +9 -164
- package/native/cmd/ttsc-typia/callable_type_literal_boundaries_transform_test.go +20 -580
- package/native/cmd/ttsc-typia/compare_equal_cover_transform_test.go +10 -127
- package/native/cmd/ttsc-typia/compare_functional_union_membership_transform_test.go +93 -289
- package/native/cmd/ttsc-typia/compare_less_nan_transform_test.go +15 -66
- package/native/cmd/ttsc-typia/compare_nondiscriminable_union_transform_test.go +9 -221
- package/native/cmd/ttsc-typia/create_assert_error_factory_arity_test.go +11 -82
- package/native/cmd/ttsc-typia/default_library_spoof_native_identity_transform_test.go +10 -100
- package/native/cmd/ttsc-typia/demo_rejects_bad_flag_test.go +15 -14
- package/native/cmd/ttsc-typia/dependency_collector_virtual_scheme_test.go +8 -17
- package/native/cmd/ttsc-typia/dynamic_key_path_helper_alias_transform_test.go +10 -70
- package/native/cmd/ttsc-typia/dynamic_key_tags_transform_test.go +9 -120
- package/native/cmd/ttsc-typia/exact_optional_family_emission_contract_test.go +252 -0
- package/native/cmd/ttsc-typia/exclude_type_tag_transform_test.go +10 -102
- package/native/cmd/ttsc-typia/fixture_directories_test.go +154 -0
- package/native/cmd/ttsc-typia/functional_promised_type_transform_test.go +11 -104
- package/native/cmd/ttsc-typia/functional_receiver_transform_test.go +16 -124
- package/native/cmd/ttsc-typia/inline_type_display_name_transform_test.go +10 -183
- package/native/cmd/ttsc-typia/instance_union_create_is_transform_test.go +11 -88
- package/native/cmd/ttsc-typia/intersection_nonsensible_backstop_transform_test.go +17 -30
- package/native/cmd/ttsc-typia/intersection_union_validation_transform_test.go +10 -404
- package/native/cmd/ttsc-typia/json_application_alias_function_validation_transform_test.go +10 -22
- package/native/cmd/ttsc-typia/json_is_stringify_scoped_checker_transform_test.go +10 -111
- package/native/cmd/ttsc-typia/json_schema_dynamic_key_determinism_transform_test.go +25 -110
- package/native/cmd/ttsc-typia/json_schema_nonsensible_intersection_diagnostic_test.go +10 -22
- package/native/cmd/ttsc-typia/json_stringify_constant_atomic_union_transform_test.go +10 -101
- package/native/cmd/ttsc-typia/lib_replacement_native_identity_transform_test.go +11 -98
- package/native/cmd/ttsc-typia/llm_evaluation_accepts_property_probability_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_accepts_unselected_source_probability_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_complete_object_shape_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_emits_configured_decimals_test.go +53 -0
- package/native/cmd/ttsc-typia/llm_evaluation_ignores_declaration_probability_without_call_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_plan_emission_transform_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_program_scan_dependencies_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_alias_comment_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_alias_refinement_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_computed_method_probability_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_conflicting_boolean_tags_test.go +52 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_finer_than_probability_decimals_test.go +100 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_imported_declaration_probability_test.go +6 -1
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_invalid_config_test.go +51 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_invalid_probability_test.go +14 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_oversized_questions_test.go +79 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_refinements_test.go +5 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_shared_values_test.go +128 -0
- package/native/cmd/ttsc-typia/llm_evaluation_rejects_undecidable_types_test.go +6 -12
- package/native/cmd/ttsc-typia/local_function_named_like_typia_operation_transform_test.go +9 -17
- package/native/cmd/ttsc-typia/metadata_type_tag_sole_malformed_diagnostic_test.go +10 -28
- package/native/cmd/ttsc-typia/native_collection_identity_is_transform_test.go +9 -129
- package/native/cmd/ttsc-typia/native_generic_name_guard_is_transform_test.go +10 -95
- package/native/cmd/ttsc-typia/native_name_collision_is_transform_test.go +9 -122
- package/native/cmd/ttsc-typia/native_named_intersection_union_transform_test.go +10 -135
- package/native/cmd/ttsc-typia/node_buffer_native_exports_is_transform_test.go +18 -234
- package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +19 -71
- package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +10 -109
- package/native/cmd/ttsc-typia/notation_pascal_case_transform_test.go +10 -142
- package/native/cmd/ttsc-typia/notation_unicode_key_transform_test.go +9 -201
- package/native/cmd/ttsc-typia/nullable_primitive_property_is_transform_test.go +10 -102
- package/native/cmd/ttsc-typia/object_custom_tag_validation_transform_test.go +10 -112
- package/native/cmd/ttsc-typia/object_union_explicit_pointer_schema_transform_test.go +68 -114
- package/native/cmd/ttsc-typia/package_declaration_native_identity_is_transform_test.go +10 -114
- package/native/cmd/ttsc-typia/pattern_line_terminator_escape_transform_test.go +45 -123
- package/native/cmd/ttsc-typia/plain_classify_class_ref_transform_test.go +12 -97
- package/native/cmd/ttsc-typia/plain_classify_container_seed_transform_test.go +12 -74
- package/native/cmd/ttsc-typia/plain_classify_cross_module_extra_transform_test.go +15 -91
- package/native/cmd/ttsc-typia/plain_classify_cross_module_transform_test.go +40 -0
- package/native/cmd/ttsc-typia/plain_classify_deep_nested_transform_test.go +12 -103
- package/native/cmd/ttsc-typia/plain_classify_field_copy_transform_test.go +10 -120
- package/native/cmd/ttsc-typia/plain_classify_from_new_transform_test.go +12 -255
- package/native/cmd/ttsc-typia/plain_classify_generic_private_rejected_test.go +30 -0
- package/native/cmd/ttsc-typia/plain_classify_inherited_private_rejected_test.go +33 -0
- package/native/cmd/ttsc-typia/plain_classify_named_interface_field_copy_test.go +33 -0
- package/native/cmd/ttsc-typia/plain_classify_private_field_rejected_test.go +36 -0
- package/native/cmd/ttsc-typia/plain_classify_recursive_anonymous_object_test.go +30 -0
- package/native/cmd/ttsc-typia/plain_classify_self_ref_private_rejected_test.go +33 -0
- package/native/cmd/ttsc-typia/plain_classify_static_private_allowed_test.go +35 -0
- package/native/cmd/ttsc-typia/plain_classify_strategy_edges_transform_test.go +16 -291
- package/native/cmd/ttsc-typia/plain_classify_unbound_anonymous_class_test.go +35 -0
- package/native/cmd/ttsc-typia/plain_classify_union_transform_test.go +12 -73
- package/native/cmd/ttsc-typia/plain_classify_validated_union_transform_test.go +11 -146
- package/native/cmd/ttsc-typia/plain_clone_bigint_wrapper_transform_test.go +10 -80
- package/native/cmd/ttsc-typia/private_field_filter_is_transform_test.go +10 -137
- package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +4 -0
- package/native/cmd/ttsc-typia/project_dependencies_barrel_reexport_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_callee_argument_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_callee_barrel_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_callee_inference_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_callee_shape_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_callee_untransformed_barrel_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_collapsed_alias_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_complete_diagnostic_transform_test.go +7 -11
- package/native/cmd/ttsc-typia/project_dependencies_complete_envelope_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_complete_inferred_type_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_complete_replaced_library_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_complete_untouched_reprint_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_computed_key_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_custom_lib_name_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_default_barrel_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_empty_heritage_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_enum_member_value_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_envelope_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_index_signature_alias_transform_test.go +9 -12
- package/native/cmd/ttsc-typia/project_dependencies_inferred_declaration_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_jsdoc_typedef_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_local_reexport_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_named_tuple_member_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_qualified_barrel_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_signature_alias_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_star_barrel_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_dependencies_type_parameter_default_transform_test.go +6 -10
- package/native/cmd/ttsc-typia/project_reference_graph_envelope_transform_test.go +10 -32
- package/native/cmd/ttsc-typia/protobuf_diagnostic_code_transform_test.go +9 -31
- package/native/cmd/ttsc-typia/protobuf_is_encode_finite_number_transform_test.go +10 -23
- package/native/cmd/ttsc-typia/protobuf_object_generic_union_encode_transform_test.go +12 -114
- package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +9 -26
- package/native/cmd/ttsc-typia/random_recursive_min_items_diagnostic_test.go +26 -22
- package/native/cmd/ttsc-typia/random_unsatisfiable_recursive_diagnostic_test.go +10 -26
- package/native/cmd/ttsc-typia/recursive_conditional_alias_name_transform_test.go +10 -185
- package/native/cmd/ttsc-typia/recursive_visit_tracking_transform_test.go +10 -291
- package/native/cmd/ttsc-typia/reflect_literals_non_literal_rejection_transform_test.go +9 -28
- package/native/cmd/ttsc-typia/schema_dts_role_transform_test.go +11 -206
- package/native/cmd/ttsc-typia/schema_literal_helpers_test.go +110 -0
- package/native/cmd/ttsc-typia/shadowed_typia_module_declaration_diagnostic_test.go +9 -17
- package/native/cmd/ttsc-typia/shallow_depth_argument_error_transform_test.go +10 -24
- package/native/cmd/ttsc-typia/shallow_depth_limit_transform_test.go +10 -105
- package/native/cmd/ttsc-typia/shallow_nested_depth_transform_test.go +10 -24
- package/native/cmd/ttsc-typia/symbol_key_member_filter_transform_test.go +10 -147
- package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +10 -272
- package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +10 -92
- package/native/cmd/ttsc-typia/transform_diagnostics_preserve_details_test.go +9 -86
- package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +48 -29
- package/native/cmd/ttsc-typia/transform_helpers_test.go +41 -360
- package/native/cmd/ttsc-typia/transform_plugin_options_come_from_payload_test.go +9 -12
- package/native/cmd/ttsc-typia/transform_project_diagnostics_preserve_details_test.go +54 -0
- package/native/cmd/ttsc-typia/transform_single_file_failure_atomicity_test.go +9 -11
- package/native/cmd/ttsc-typia/transform_single_file_failure_writes_no_stdout_test.go +9 -8
- package/native/cmd/ttsc-typia/transform_single_file_js_distinguishes_same_basename_sources_test.go +9 -14
- package/native/cmd/ttsc-typia/transform_single_file_js_locates_output_across_layouts_test.go +9 -16
- package/native/cmd/ttsc-typia/transform_single_file_success_publishes_artifact_test.go +9 -9
- package/native/cmd/ttsc-typia/transform_wasm_host_argv_reports_diagnostics_test.go +9 -10
- package/native/cmd/ttsc-typia/tuple_optional_compare_clone_transform_test.go +33 -181
- package/native/cmd/ttsc-typia/typia_diagnostic_formatting_test.go +46 -0
- package/native/cmd/ttsc-typia/uri_template_comment_dotted_variable_transform_test.go +57 -0
- package/native/cmd/ttsc-typia/user_global_native_identity_transform_test.go +16 -202
- package/native/cmd/ttsc-typia/wrong_type_tag_target_diagnostic_test.go +12 -12
- package/native/core/context/EmitFactory.go +10 -0
- package/native/core/context/IProgrammerProps.go +21 -4
- package/native/core/context/ITransformOptions.go +22 -4
- package/native/core/context/ITypiaContext.go +61 -11
- package/native/core/context/ImportProgrammer.go +144 -6
- package/native/core/context/TransformerError.go +74 -7
- package/native/core/context/import_programmer_default_type_only_needs_every_request_test.go +58 -0
- package/native/core/context/import_programmer_module_identifier_test.go +5 -0
- package/native/core/context/import_programmer_statement_coverage_test.go +106 -50
- package/native/core/context/transformer_error_formatting_test.go +82 -77
- package/native/core/factories/CommentFactory.go +8 -0
- package/native/core/factories/ExpressionFactory.go +121 -5
- package/native/core/factories/FormatCheatSheet.go +1 -1
- package/native/core/factories/JsonMetadataFactory.go +29 -4
- package/native/core/factories/LiteralFactory.go +24 -1
- package/native/core/factories/MetadataCommentTagFactory.go +177 -29
- package/native/core/factories/MetadataFactory.go +59 -5
- package/native/core/factories/ProtobufFactory.go +17 -4
- package/native/core/factories/StatementFactory.go +38 -5
- package/native/core/factories/TemplateFactory.go +10 -0
- package/native/core/factories/TypeFactory.go +33 -5
- package/native/core/factories/expression_factory_number_spells_non_finite_values_test.go +74 -0
- package/native/core/factories/factory_utility_coverage_test.go +8 -3
- package/native/core/factories/format_alias_resolves_to_cheat_sheet_test.go +5 -0
- package/native/core/factories/format_alias_table_targets_the_cheat_sheet_test.go +20 -30
- package/native/core/factories/identifier_factory_postfix_escapes_every_key_test.go +5 -0
- package/native/core/factories/identifier_factory_postfix_survives_every_code_point_test.go +5 -0
- package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +115 -22
- package/native/core/factories/internal/metadata/MetadataHelper.go +64 -1
- package/native/core/factories/internal/metadata/comment_tags_coverage_test.go +167 -148
- package/native/core/factories/internal/metadata/emend_metadata_atomics.go +28 -1
- package/native/core/factories/internal/metadata/emplace_metadata_alias.go +10 -3
- package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +17 -0
- package/native/core/factories/internal/metadata/emplace_metadata_object.go +12 -1
- package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +10 -0
- package/native/core/factories/internal/metadata/explore_metadata.go +48 -9
- package/native/core/factories/internal/metadata/iterate_metadata.go +12 -0
- package/native/core/factories/internal/metadata/iterate_metadata_alias.go +8 -0
- package/native/core/factories/internal/metadata/iterate_metadata_array.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +8 -0
- package/native/core/factories/internal/metadata/iterate_metadata_collection.go +8 -0
- package/native/core/factories/internal/metadata/iterate_metadata_collection_branch_matrix_test.go +148 -143
- package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_constant.go +68 -0
- package/native/core/factories/internal/metadata/iterate_metadata_escape.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_function.go +33 -10
- package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +22 -11
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_brand_coverage_test.go +5 -0
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_coverage_test.go +88 -83
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_shareable_name_test.go +4 -0
- package/native/core/factories/internal/metadata/iterate_metadata_map.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_native.go +11 -1
- package/native/core/factories/internal/metadata/iterate_metadata_object.go +8 -0
- package/native/core/factories/internal/metadata/iterate_metadata_set.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_sort.go +11 -0
- package/native/core/factories/internal/metadata/iterate_metadata_template.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +7 -0
- package/native/core/factories/internal/metadata/iterate_metadata_union.go +10 -0
- package/native/core/factories/internal/metadata/js_doc_link_text_test.go +5 -0
- package/native/core/factories/internal/metadata/js_doc_parameter_name_reads_qualified_name_test.go +31 -26
- package/native/core/factories/internal/metadata/js_doc_type_tag_blank_separation_test.go +88 -0
- package/native/core/factories/internal/metadata/sort_constants_coverage_test.go +50 -39
- package/native/core/factories/internal/metadata/type_arguments_precondition_test.go +5 -0
- package/native/core/factories/json_metadata_factory_dedupes_bigint_diagnostics_test.go +5 -0
- package/native/core/factories/json_metadata_factory_rejects_bigint_native_test.go +5 -0
- package/native/core/factories/literal_factory_null_survives_objects_test.go +5 -0
- package/native/core/factories/literal_factory_ordered_object_marshals_json_test.go +5 -0
- package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +5 -0
- package/native/core/factories/metadata_comment_tag_factory_exclusivity_matches_interface_test.go +10 -5
- package/native/core/factories/metadata_comment_tag_factory_holds_bigint_tags_exact_test.go +173 -0
- package/native/core/factories/metadata_comment_tag_factory_reads_javascript_numbers_test.go +163 -0
- package/native/core/factories/metadata_comment_tag_factory_rejects_out_of_range_integer_test.go +7 -2
- package/native/core/factories/metadata_comment_tag_factory_string_length_helpers_test.go +5 -0
- package/native/core/factories/metadata_type_tag_factory_accepts_legal_tag_combinations_test.go +6 -1
- package/native/core/factories/metadata_type_tag_factory_keeps_bool_form_exclusivity_test.go +5 -0
- package/native/core/factories/metadata_type_tag_factory_rejects_cross_kind_exclusive_tags_test.go +5 -0
- package/native/core/factories/metadata_type_tag_factory_rejects_duplicated_array_form_tags_test.go +5 -0
- package/native/core/factories/metadata_type_tag_factory_reports_all_invalid_candidates_test.go +5 -0
- package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +58 -2
- package/native/core/factories/protobuf_factory_bigint_keeps_each_width_test.go +47 -0
- package/native/core/factories/protobuf_factory_rejects_invalid_field_names_test.go +5 -0
- package/native/core/factories/protobuf_recovery_ownership_test.go +5 -0
- package/native/core/programmers/AssertProgrammer.go +27 -0
- package/native/core/programmers/IsProgrammer.go +67 -1
- package/native/core/programmers/RandomProgrammer.go +39 -22
- package/native/core/programmers/ValidateProgrammer.go +28 -1
- package/native/core/programmers/compare/CompareEqualProgrammer.go +26 -3
- package/native/core/programmers/compare/CompareLessProgrammer.go +17 -3
- package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +47 -6
- package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +70 -13
- package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +76 -12
- package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +31 -5
- package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +169 -18
- package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +67 -11
- package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +31 -5
- package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +63 -12
- package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +68 -11
- package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +22 -2
- package/native/core/programmers/helpers/ClassifyJoiner.go +14 -6
- package/native/core/programmers/helpers/CloneJoiner.go +29 -0
- package/native/core/programmers/helpers/FunctionProgrammer.go +98 -0
- package/native/core/programmers/helpers/ICheckEntry.go +16 -0
- package/native/core/programmers/helpers/IExpressionEntry.go +8 -0
- package/native/core/programmers/helpers/ModuloText.go +5 -0
- package/native/core/programmers/helpers/NotationJoiner.go +23 -0
- package/native/core/programmers/helpers/ProtobufWire.go +8 -0
- package/native/core/programmers/helpers/PruneJoiner.go +21 -0
- package/native/core/programmers/helpers/RandomJoiner.go +52 -5
- package/native/core/programmers/helpers/StringifyJoinder.go +31 -12
- package/native/core/programmers/helpers/UnionExplorer.go +202 -70
- package/native/core/programmers/helpers/UnionPredicator.go +9 -0
- package/native/core/programmers/helpers/clone_joiner_optional_condition_test.go +14 -1
- package/native/core/programmers/helpers/function_programmer_unique_names_test.go +5 -0
- package/native/core/programmers/helpers/joiner_branch_coverage_test.go +5 -0
- package/native/core/programmers/helpers/option_predicator_contract_matrix_test.go +84 -0
- package/native/core/programmers/helpers/random_joiner_recursive_array_guard_test.go +5 -0
- package/native/core/programmers/helpers/union_explorer_coverage_test.go +120 -112
- package/native/core/programmers/helpers/union_predicator_checks_neighbor_flag_test.go +5 -0
- package/native/core/programmers/helpers/union_predicator_skips_atomic_like_native_fields_test.go +5 -0
- package/native/core/programmers/helpers/union_predicator_skips_collection_bucket_fields_test.go +5 -0
- package/native/core/programmers/helpers/union_predicator_skips_shared_native_names_test.go +5 -0
- package/native/core/programmers/helpers/union_predicator_skips_shared_object_fields_test.go +5 -0
- package/native/core/programmers/helpers/union_predicator_skips_shared_template_fields_test.go +5 -0
- package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +9 -0
- package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +9 -0
- package/native/core/programmers/http/HttpAssertQueryProgrammer.go +20 -0
- package/native/core/programmers/http/HttpFormDataProgrammer.go +48 -2
- package/native/core/programmers/http/HttpHeadersProgrammer.go +63 -4
- package/native/core/programmers/http/HttpIsFormDataProgrammer.go +8 -0
- package/native/core/programmers/http/HttpIsHeadersProgrammer.go +8 -0
- package/native/core/programmers/http/HttpIsQueryProgrammer.go +19 -1
- package/native/core/programmers/http/HttpParameterProgrammer.go +1 -3
- package/native/core/programmers/http/HttpQueryProgrammer.go +44 -44
- package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +8 -0
- package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +8 -0
- package/native/core/programmers/http/HttpValidateQueryProgrammer.go +18 -1
- package/native/core/programmers/http/http_programmer_helper_coverage_test.go +98 -93
- package/native/core/programmers/internal/CheckerProgrammer.go +162 -18
- package/native/core/programmers/internal/FeatureProgrammer.go +254 -38
- package/native/core/programmers/internal/feature_programmer_visit_guard_test.go +82 -55
- package/native/core/programmers/internal/internal_utility_coverage_test.go +338 -345
- package/native/core/programmers/iterate/check_array_length.go +15 -0
- package/native/core/programmers/iterate/check_bigint.go +14 -0
- package/native/core/programmers/iterate/check_dynamic_key.go +33 -19
- package/native/core/programmers/iterate/check_dynamic_key_tag_rows_test.go +59 -32
- package/native/core/programmers/iterate/check_dynamic_properties.go +70 -16
- package/native/core/programmers/iterate/check_everything.go +7 -0
- package/native/core/programmers/iterate/check_native.go +14 -0
- package/native/core/programmers/iterate/check_number.go +16 -0
- package/native/core/programmers/iterate/check_number_option_contract_matrix_test.go +84 -0
- package/native/core/programmers/iterate/check_object.go +28 -0
- package/native/core/programmers/iterate/check_object_strict_optional_undefined_test.go +6 -1
- package/native/core/programmers/iterate/check_object_type_tags.go +15 -0
- package/native/core/programmers/iterate/check_string.go +14 -0
- package/native/core/programmers/iterate/check_template.go +15 -0
- package/native/core/programmers/iterate/decode_union_object.go +35 -2
- package/native/core/programmers/iterate/exact_optional_checker_entry_contract_test.go +142 -0
- package/native/core/programmers/iterate/exact_optional_graph_clone_random_contract_test.go +213 -0
- package/native/core/programmers/iterate/feature_object_entries.go +40 -0
- package/native/core/programmers/iterate/iterate_utility_coverage_test.go +30 -5
- package/native/core/programmers/iterate/json_schema_array.go +16 -0
- package/native/core/programmers/iterate/json_schema_bigint.go +7 -0
- package/native/core/programmers/iterate/json_schema_boolean.go +7 -0
- package/native/core/programmers/iterate/json_schema_discriminator_declaration_syntax_test.go +10 -5
- package/native/core/programmers/iterate/json_schema_jsDocTags.go +10 -3
- package/native/core/programmers/iterate/json_schema_jsdoc_tags_cast_reads_javascript_numbers_test.go +69 -0
- package/native/core/programmers/iterate/json_schema_native.go +27 -0
- package/native/core/programmers/iterate/json_schema_number.go +7 -0
- package/native/core/programmers/iterate/json_schema_pattern_property_order_test.go +5 -0
- package/native/core/programmers/iterate/json_schema_plugin.go +7 -0
- package/native/core/programmers/iterate/json_schema_station.go +16 -0
- package/native/core/programmers/iterate/json_schema_string.go +7 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader.go +29 -10
- package/native/core/programmers/iterate/openapi_v3_downgrader_boolean_default_test.go +9 -4
- package/native/core/programmers/iterate/openapi_v3_downgrader_test.go +9 -4
- package/native/core/programmers/iterate/postfix_of_tuple.go +8 -0
- package/native/core/programmers/iterate/template_interpolation_tags_test.go +46 -4
- package/native/core/programmers/iterate/template_runtime_pattern.go +10 -4
- package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +8 -0
- package/native/core/programmers/json/JsonApplicationProgrammer.go +9 -0
- package/native/core/programmers/json/JsonAssertParseProgrammer.go +9 -0
- package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +9 -0
- package/native/core/programmers/json/JsonIsParseProgrammer.go +7 -0
- package/native/core/programmers/json/JsonIsStringifyProgrammer.go +8 -0
- package/native/core/programmers/json/JsonSchemaProgrammer.go +15 -0
- package/native/core/programmers/json/JsonSchemasProgrammer.go +16 -0
- package/native/core/programmers/json/JsonStringifyProgrammer.go +20 -32
- package/native/core/programmers/json/JsonValidateParseProgrammer.go +8 -0
- package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +8 -0
- package/native/core/programmers/json/json_schema_programmer_coverage_test.go +176 -171
- package/native/core/programmers/json/json_schemas_programmer_dedupes_bigint_diagnostics_test.go +5 -0
- package/native/core/programmers/json/json_schemas_programmer_rejects_bigint_native_test.go +5 -0
- package/native/core/programmers/json/json_stringify_programmer_coverage_test.go +400 -398
- package/native/core/programmers/llm/LlmApplicationProgrammer.go +10 -9
- package/native/core/programmers/llm/LlmCoerceProgrammer.go +16 -9
- package/native/core/programmers/llm/LlmControllerProgrammer.go +10 -0
- package/native/core/programmers/llm/LlmEvaluationProgrammer.go +107 -11
- package/native/core/programmers/llm/LlmParametersProgrammer.go +8 -9
- package/native/core/programmers/llm/LlmParseProgrammer.go +24 -9
- package/native/core/programmers/llm/LlmSchemaProgrammer.go +50 -13
- package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +8 -9
- package/native/core/programmers/llm/llm_application_programmer_coverage_test.go +146 -141
- package/native/core/programmers/llm/llm_reference_codec_test.go +5 -0
- package/native/core/programmers/llm/llm_reference_description_test.go +13 -3
- package/native/core/programmers/llm/llm_schema_programmer_coverage_test.go +255 -250
- package/native/core/programmers/llm/llm_schema_programmer_dedupes_bigint_diagnostics_test.go +5 -0
- package/native/core/programmers/llm/llm_schema_programmer_rejects_bigint_native_test.go +5 -0
- package/native/core/programmers/llm/llm_schema_programmer_rejects_exclude_tag_in_strict_test.go +7 -3
- package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +32 -4
- package/native/core/programmers/notations/NotationGeneralProgrammer.go +70 -42
- package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +29 -3
- package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +32 -4
- package/native/core/programmers/notations/notation_general_helpers_test.go +363 -367
- package/native/core/programmers/notations/notation_general_programmer_pascal_multiword_test.go +5 -0
- package/native/core/programmers/notations/notation_general_programmer_snake_prefix_test.go +5 -0
- package/native/core/programmers/notations/notation_general_programmer_underscore_boundary_test.go +5 -0
- package/native/core/programmers/plain/PlainAssertClassifyProgrammer.go +23 -3
- package/native/core/programmers/plain/PlainAssertCloneProgrammer.go +22 -3
- package/native/core/programmers/plain/PlainAssertPruneProgrammer.go +22 -3
- package/native/core/programmers/plain/PlainClassifyProgrammer.go +61 -85
- package/native/core/programmers/plain/PlainCloneProgrammer.go +34 -38
- package/native/core/programmers/plain/PlainIsCloneProgrammer.go +18 -2
- package/native/core/programmers/plain/PlainIsPruneProgrammer.go +18 -2
- package/native/core/programmers/plain/PlainPruneProgrammer.go +29 -10
- package/native/core/programmers/plain/PlainValidateClassifyProgrammer.go +22 -3
- package/native/core/programmers/plain/PlainValidateCloneProgrammer.go +22 -3
- package/native/core/programmers/plain/PlainValidatePruneProgrammer.go +22 -3
- package/native/core/programmers/plain/plain_programmer_helper_coverage_test.go +6 -3
- package/native/core/programmers/plain/plain_prune_programmer_branch_matrix_test.go +5 -0
- package/native/core/programmers/plain/plain_tuple_seed_recovery_ownership_test.go +5 -0
- package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +19 -0
- package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +19 -0
- package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +19 -1
- package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +30 -30
- package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +19 -1
- package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +19 -1
- package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +11 -5
- package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +19 -1
- package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +19 -1
- package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +493 -453
- package/native/core/programmers/random_programmer_helper_coverage_test.go +350 -342
- package/native/core/programmers/random_programmer_length_argument_test.go +32 -1
- package/native/core/programmers/random_programmer_min_items_tag_test.go +5 -0
- package/native/core/programmers/random_programmer_pick_hook_test.go +88 -0
- package/native/core/programmers/reflect/ReflectLiteralsProgrammer.go +15 -0
- package/native/core/schemas/metadata/IMetadataTypeTagSequence.go +12 -1
- package/native/core/schemas/metadata/MetadataAlias.go +41 -1
- package/native/core/schemas/metadata/MetadataAliasType.go +57 -21
- package/native/core/schemas/metadata/MetadataArray.go +37 -1
- package/native/core/schemas/metadata/MetadataArrayType.go +52 -18
- package/native/core/schemas/metadata/MetadataAtomic.go +44 -10
- package/native/core/schemas/metadata/MetadataBigint.go +20 -4
- package/native/core/schemas/metadata/MetadataCollection.go +264 -53
- package/native/core/schemas/metadata/MetadataComponents.go +13 -116
- package/native/core/schemas/metadata/MetadataConstant.go +35 -13
- package/native/core/schemas/metadata/MetadataConstantValue.go +87 -20
- package/native/core/schemas/metadata/MetadataDefaultLibrary.go +20 -0
- package/native/core/schemas/metadata/MetadataDependency.go +52 -2
- package/native/core/schemas/metadata/MetadataEscaped.go +48 -8
- package/native/core/schemas/metadata/MetadataFunction.go +42 -16
- package/native/core/schemas/metadata/MetadataMap.go +53 -4
- package/native/core/schemas/metadata/MetadataNative.go +65 -9
- package/native/core/schemas/metadata/MetadataObject.go +37 -1
- package/native/core/schemas/metadata/MetadataObjectType.go +117 -74
- package/native/core/schemas/metadata/MetadataParameter.go +51 -16
- package/native/core/schemas/metadata/MetadataProperty.go +49 -19
- package/native/core/schemas/metadata/MetadataSchema.go +324 -198
- package/native/core/schemas/metadata/MetadataSet.go +49 -2
- package/native/core/schemas/metadata/MetadataTemplate.go +61 -15
- package/native/core/schemas/metadata/MetadataTuple.go +21 -0
- package/native/core/schemas/metadata/MetadataTupleType.go +61 -19
- package/native/core/schemas/metadata/metadata_atomic_tags_are_owned_test.go +75 -0
- package/native/core/schemas/metadata/metadata_bigint_is_comparable_test.go +5 -0
- package/native/core/schemas/metadata/metadata_collection_generic_argument_dot_test.go +13 -8
- package/native/core/schemas/metadata/metadata_collection_name_allocation_test.go +9 -2
- package/native/core/schemas/metadata/metadata_collection_openapi_name_cascade_test.go +5 -0
- package/native/core/schemas/metadata/metadata_collection_openapi_name_test.go +7 -1
- package/native/core/schemas/metadata/metadata_object_coverage_compares_property_values_test.go +61 -0
- package/native/core/schemas/metadata/metadata_object_type_required_literal_property_test.go +7 -1
- package/native/core/schemas/metadata/metadata_schema_covers_tag_matrix_test.go +8 -3
- package/native/core/schemas/metadata/metadata_schema_merge_keeps_inputs_test.go +117 -0
- package/native/core/schemas/metadata/metadata_schema_optional_root_isolation_test.go +59 -0
- package/native/core/schemas/metadata/metadata_schema_shallow_clone_names_test.go +36 -0
- package/native/core/schemas/metadata/metadata_schema_sole_literal_caches_pointer_test.go +5 -0
- package/native/core/schemas/metadata/schema_sequence_and_json_coverage_test.go +289 -387
- package/native/core/schemas/protobuf/IProtobufProperty.go +11 -0
- package/native/core/schemas/protobuf/IProtobufPropertyType.go +94 -0
- package/native/core/schemas/protobuf/IProtobufSchema.go +89 -5
- package/native/core/utils/NumberUtil.go +201 -0
- package/native/core/utils/PromiseTypeFactory.go +12 -1
- package/native/core/utils/number_util_rational_keeps_written_value_test.go +67 -0
- package/native/core/utils/number_util_reads_javascript_number_grammar_test.go +152 -0
- package/native/core/utils/promise_type_factory_semantics_test.go +5 -0
- package/native/transform/CallExpressionTransformer.go +42 -10
- package/native/transform/FileTransformer.go +72 -53
- package/native/transform/ITransformProps.go +7 -0
- package/native/transform/NodeTransformer.go +10 -1
- package/native/transform/TransformerError.go +31 -0
- package/native/transform/call_expression_transformer_registry_coverage_test.go +40 -31
- package/native/transform/call_expression_transformer_target_test.go +33 -4
- package/native/transform/features/CreateIsTransformer.go +0 -1
- package/native/transform/features/CreateShallowTransformer.go +0 -1
- package/native/transform/features/CreateValidateTransformer.go +0 -1
- package/native/transform/features/IsTransformer.go +0 -1
- package/native/transform/features/ShallowTransformer.go +0 -1
- package/native/transform/features/ValidateTransformer.go +0 -1
- package/native/transform/features/functional/FunctionalGenericTransformer.go +46 -7
- package/native/transform/features/http/CreateHttpIsQueryTransformer.go +0 -1
- package/native/transform/features/http/CreateHttpQueryTransformer.go +0 -1
- package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +0 -1
- package/native/transform/features/http/HttpIsQueryTransformer.go +0 -1
- package/native/transform/features/http/HttpQueryTransformer.go +0 -1
- package/native/transform/features/http/HttpValidateQueryTransformer.go +0 -1
- package/native/transform/features/llm/LlmEvaluationProbabilityDeclarations_test.go +6 -1
- package/native/transform/features/llm/LlmEvaluationTransformer.go +55 -1
- package/native/transform/features/notations/notation_transformer_capitalize_test.go +29 -0
- package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +1 -1
- package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +1 -1
- package/native/transform/features/reflect/reflect_metadata_transformer_edge_branches_test.go +42 -30
- package/native/transform/file_transformer_coverage_test.go +17 -3
- package/native/transform/internal/GenericTransformer.go +67 -113
- package/native/transform/transform.go +16 -2
- package/package.json +7 -6
- package/src/TypeGuardError.ts +20 -4
- package/src/basic.ts +1020 -0
- package/src/compare.ts +21 -0
- package/src/functional.ts +42 -0
- package/src/http.ts +136 -34
- package/src/internal/_IProtobufWriter.ts +115 -0
- package/src/internal/_ProtobufReader.ts +159 -1
- package/src/internal/_ProtobufSizer.ts +137 -5
- package/src/internal/_ProtobufWriter.ts +154 -1
- package/src/internal/_accessExpressionAsString.ts +11 -0
- package/src/internal/_assertGuard.ts +12 -0
- package/src/internal/_coerceLlmArguments.ts +10 -0
- package/src/internal/_createLlmEvaluation.ts +10 -53
- package/src/internal/_createStandardSchema.ts +13 -0
- package/src/internal/_decimal.ts +77 -0
- package/src/internal/_functionalTypeGuardErrorFactory.ts +8 -0
- package/src/internal/_httpFormDataReadArray.ts +9 -0
- package/src/internal/_httpFormDataReadBigint.ts +15 -1
- package/src/internal/_httpFormDataReadBlob.ts +11 -0
- package/src/internal/_httpFormDataReadBoolean.ts +14 -1
- package/src/internal/_httpFormDataReadFile.ts +11 -0
- package/src/internal/_httpFormDataReadNumber.ts +14 -1
- package/src/internal/_httpFormDataReadString.ts +15 -1
- package/src/internal/_httpHeaderReadBigint.ts +17 -1
- package/src/internal/_httpHeaderReadBoolean.ts +12 -0
- package/src/internal/_httpHeaderReadNumber.ts +17 -1
- package/src/internal/_httpParameterReadBigint.ts +14 -0
- package/src/internal/_httpParameterReadBoolean.ts +11 -0
- package/src/internal/_httpParameterReadNumber.ts +14 -0
- package/src/internal/_httpParameterReadString.ts +17 -2
- package/src/internal/_httpQueryParseURLSearchParams.ts +14 -0
- package/src/internal/_httpQueryReadArray.ts +9 -0
- package/src/internal/_httpQueryReadBigint.ts +18 -1
- package/src/internal/_httpQueryReadBoolean.ts +15 -1
- package/src/internal/_httpQueryReadNumber.ts +18 -1
- package/src/internal/_httpQueryReadString.ts +15 -1
- package/src/internal/_isBetween.ts +8 -0
- package/src/internal/_isBigintString.ts +11 -0
- package/src/internal/_isFormatByte.ts +12 -0
- package/src/internal/_isFormatDate.ts +11 -0
- package/src/internal/_isFormatDateTime.ts +13 -0
- package/src/internal/_isFormatDuration.ts +13 -0
- package/src/internal/_isFormatEmail.ts +13 -0
- package/src/internal/_isFormatHostname.ts +12 -0
- package/src/internal/_isFormatIdnEmail.ts +14 -0
- package/src/internal/_isFormatIdnHostname.ts +14 -0
- package/src/internal/_isFormatIpv4.ts +11 -0
- package/src/internal/_isFormatIpv6.ts +12 -0
- package/src/internal/_isFormatIri.ts +11 -0
- package/src/internal/_isFormatIriReference.ts +13 -0
- package/src/internal/_isFormatJsonPointer.ts +11 -0
- package/src/internal/_isFormatPassword.ts +11 -0
- package/src/internal/_isFormatRegex.ts +11 -0
- package/src/internal/_isFormatRelativeJsonPointer.ts +11 -0
- package/src/internal/_isFormatTime.ts +12 -0
- package/src/internal/_isFormatUri.ts +15 -0
- package/src/internal/_isFormatUriReference.ts +11 -0
- package/src/internal/_isFormatUriTemplate.ts +14 -1
- package/src/internal/_isFormatUrl.ts +15 -0
- package/src/internal/_isFormatUuid.ts +11 -0
- package/src/internal/_isMultipleOf.ts +11 -0
- package/src/internal/_isTypeFloat.ts +9 -0
- package/src/internal/_isTypeInt16.ts +8 -0
- package/src/internal/_isTypeInt32.ts +8 -0
- package/src/internal/_isTypeInt64.ts +11 -0
- package/src/internal/_isTypeInt64Bigint.ts +8 -0
- package/src/internal/_isTypeInt8.ts +8 -0
- package/src/internal/_isTypeUint16.ts +8 -0
- package/src/internal/_isTypeUint32.ts +8 -0
- package/src/internal/_isTypeUint64.ts +11 -0
- package/src/internal/_isTypeUint64Bigint.ts +8 -0
- package/src/internal/_isTypeUint8.ts +8 -0
- package/src/internal/_isUniqueItems.ts +46 -0
- package/src/internal/_jsonStringifyArray.ts +2 -0
- package/src/internal/_jsonStringifyElement.ts +2 -0
- package/src/internal/_jsonStringifyNumber.ts +9 -0
- package/src/internal/_jsonStringifyProperty.ts +3 -1
- package/src/internal/_jsonStringifyRest.ts +11 -0
- package/src/internal/_jsonStringifyString.ts +13 -0
- package/src/internal/_jsonStringifyTail.ts +8 -0
- package/src/internal/_llmApplicationFinalize.ts +13 -0
- package/src/internal/_notationAny.ts +14 -0
- package/src/internal/_notationAssign.ts +12 -0
- package/src/internal/_notationKebab.ts +9 -0
- package/src/internal/_notationKeyCollision.ts +8 -0
- package/src/internal/_notationSnake.ts +12 -0
- package/src/internal/_parseLlmArguments.ts +12 -0
- package/src/internal/_plainCloneAny.ts +15 -0
- package/src/internal/_randomArray.ts +42 -20
- package/src/internal/_randomBigint.ts +116 -3
- package/src/internal/_randomBoolean.ts +8 -0
- package/src/internal/_randomFormatByte.ts +8 -0
- package/src/internal/_randomFormatDate.ts +10 -0
- package/src/internal/_randomFormatDatetime.ts +10 -0
- package/src/internal/_randomFormatDuration.ts +8 -0
- package/src/internal/_randomFormatEmail.ts +8 -0
- package/src/internal/_randomFormatHostname.ts +15 -1
- package/src/internal/_randomFormatIdnEmail.ts +13 -0
- package/src/internal/_randomFormatIdnHostname.ts +12 -0
- package/src/internal/_randomFormatIpv4.ts +8 -0
- package/src/internal/_randomFormatIpv6.ts +8 -0
- package/src/internal/_randomFormatIri.ts +11 -0
- package/src/internal/_randomFormatIriReference.ts +12 -0
- package/src/internal/_randomFormatJsonPointer.ts +12 -0
- package/src/internal/_randomFormatPassword.ts +13 -0
- package/src/internal/_randomFormatRegex.ts +8 -0
- package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -0
- package/src/internal/_randomFormatTime.ts +13 -0
- package/src/internal/_randomFormatUri.ts +12 -0
- package/src/internal/_randomFormatUriReference.ts +12 -0
- package/src/internal/_randomFormatUriTemplate.ts +12 -0
- package/src/internal/_randomFormatUrl.ts +12 -0
- package/src/internal/_randomFormatUuid.ts +13 -0
- package/src/internal/_randomInteger.ts +99 -33
- package/src/internal/_randomMultiple.ts +47 -15
- package/src/internal/_randomNumber.ts +107 -38
- package/src/internal/_randomPattern.ts +12 -0
- package/src/internal/_randomPick.ts +25 -7
- package/src/internal/_randomString.ts +36 -13
- package/src/internal/_randomStringLength.ts +31 -1
- package/src/internal/_stringLength.ts +11 -0
- package/src/internal/_stringLengthGte.ts +11 -0
- package/src/internal/_stringLengthLte.ts +11 -0
- package/src/internal/_throwTypeGuardError.ts +9 -0
- package/src/internal/_validateReport.ts +15 -0
- package/src/internal/private/__notationRename.ts +5 -0
- package/src/internal/private/__randomComposition.ts +27 -3
- package/src/internal/private/__randomEpoch.ts +15 -0
- package/src/json.ts +49 -14
- package/src/llm.ts +45 -26
- package/src/module.ts +1 -935
- package/src/notations.ts +60 -0
- package/src/plain.ts +38 -0
- package/src/protobuf.ts +41 -7
- package/src/reflect.ts +16 -12
- package/src/transform.ts +17 -0
- package/native/cmd/ttsc-typia/boolean_literal_discriminant_schema_transform_test.go +0 -374
- package/native/cmd/ttsc-typia/build_reports_semantic_diagnostics_test.go +0 -34
- package/native/cmd/ttsc-typia/build_reports_syntactic_diagnostics_test.go +0 -34
- package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +0 -316
- package/native/cmd/ttsc-typia/compare_less_transform_test.go +0 -180
- package/native/cmd/ttsc-typia/compare_method_delegation_transform_test.go +0 -173
- package/native/cmd/ttsc-typia/compare_native_object_overmatch_transform_test.go +0 -161
- package/native/cmd/ttsc-typia/compare_template_literal_union_transform_test.go +0 -241
- package/native/cmd/ttsc-typia/compare_union_discrimination_transform_test.go +0 -289
- package/native/cmd/ttsc-typia/escaped_property_key_path_transform_test.go +0 -193
- package/native/cmd/ttsc-typia/finite_option_number_leaf_transform_test.go +0 -240
- package/native/cmd/ttsc-typia/intersection_all_never_union_transform_test.go +0 -168
- package/native/cmd/ttsc-typia/intersection_brand_transform_test.go +0 -267
- package/native/cmd/ttsc-typia/is_object_function_member_transform_test.go +0 -205
- package/native/cmd/ttsc-typia/json_is_stringify_finite_number_transform_test.go +0 -198
- package/native/cmd/ttsc-typia/json_stringify_contextual_undefined_transform_test.go +0 -556
- package/native/cmd/ttsc-typia/json_stringify_special_key_transform_test.go +0 -238
- package/native/cmd/ttsc-typia/notation_dynamic_keys_transform_test.go +0 -286
- package/native/cmd/ttsc-typia/notation_literal_collision_transform_test.go +0 -164
- package/native/cmd/ttsc-typia/plain_prune_union_object_overmatch_transform_test.go +0 -219
- package/native/cmd/ttsc-typia/recursive_container_helper_index_transform_test.go +0 -206
- package/native/cmd/ttsc-typia/reflect_literals_bigint_transform_test.go +0 -148
- package/native/cmd/ttsc-typia/reflect_schema_bigint_transform_test.go +0 -173
- package/native/cmd/ttsc-typia/run_default_build_route_test.go +0 -31
- package/native/cmd/ttsc-typia/shallow_depth_runtime_test.go +0 -173
- package/native/cmd/ttsc-typia/shallow_factory_depth_runtime_test.go +0 -171
- package/native/cmd/ttsc-typia/symbol_index_domain_transform_test.go +0 -316
- package/native/cmd/ttsc-typia/transform_declaration_source_produces_no_javascript_test.go +0 -67
- package/native/cmd/ttsc-typia/transform_single_file_js_empty_emit_reports_no_output_test.go +0 -100
- package/native/core/factories/internal/metadata/optional_coalesce_coverage_test.go +0 -38
- package/native/core/programmers/functional/functional_assert_helper_coverage_test.go +0 -26
- package/native/core/programmers/iterate/iterate_check_coverage_test.go +0 -96
- package/native/core/programmers/programmer_direct_helper_coverage_test.go +0 -70
- package/native/core/schemas/metadata/IMetadataDictionary.go +0 -8
- package/native/core/schemas/protobuf/protobuf_marker_coverage_test.go +0 -58
- package/native/core/typings/Writable.go +0 -5
- package/native/transform/ImportTransformer.go +0 -285
- package/native/transform/TypiaGenerator.go +0 -171
- package/native/transform/features/feature_transformer_entry_coverage_test.go +0 -59
- package/native/transform/features/http/http_transformer_entry_coverage_test.go +0 -65
- package/native/transform/features/json/json_transformer_entry_coverage_test.go +0 -56
- package/native/transform/features/llm/llm_transformer_entry_coverage_test.go +0 -50
- package/native/transform/features/notations/notation_transformer_entry_coverage_test.go +0 -58
- package/native/transform/features/plain/plain_transformer_entry_coverage_test.go +0 -61
- package/native/transform/features/protobuf/protobuf_transformer_entry_coverage_test.go +0 -56
- package/native/transform/features/reflect/reflect_transformer_entry_coverage_test.go +0 -47
- package/native/transform/import_transformer_coverage_test.go +0 -153
- package/native/transform/typia_generator_helpers_coverage_test.go +0 -166
|
@@ -8,12 +8,26 @@ import (
|
|
|
8
8
|
nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
9
9
|
)
|
|
10
10
|
|
|
11
|
+
// Check_stringProps is the argument record of Check_string, which builds the
|
|
12
|
+
// check entry of a string atomic.
|
|
13
|
+
//
|
|
14
|
+
// @evidence contracts/common.md#principled-implementation It is the argument record of Check_string, which builds the check entry of a string atomic; its 3 fields (Context, Atomic, Input) are named so that a producer and a consumer cannot transpose them.
|
|
15
|
+
// @evidence contracts/common.md#clear-and-simple-design A 3-field record with no methods.
|
|
16
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
17
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is.
|
|
11
18
|
type Check_stringProps struct {
|
|
12
19
|
Context nativecontext.ITypiaContext
|
|
13
20
|
Atomic *nativemetadata.MetadataAtomic
|
|
14
21
|
Input *shimast.Expression
|
|
15
22
|
}
|
|
16
23
|
|
|
24
|
+
// Check_string builds the check entry of a string atomic: a `typeof input ===
|
|
25
|
+
// "string"` guard plus the atomic's type-tag conditions.
|
|
26
|
+
//
|
|
27
|
+
// @evidence contracts/common.md#principled-implementation It builds the check entry of a string atomic: a `typeof input === "string"` guard plus the atomic's type-tag conditions.
|
|
28
|
+
// @evidence contracts/common.md#clear-and-simple-design One exported function; the pieces that repeat live in private helpers of the same file.
|
|
29
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Its inputs are its arguments and the context they carry, and it keeps no state of its own.
|
|
30
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what it builds.
|
|
17
31
|
func Check_string(props Check_stringProps) nativehelpers.ICheckEntry {
|
|
18
32
|
f := nativecontext.EmitFactoryOf(check_string_factory, props.Context.Emit)
|
|
19
33
|
conditions := check_string_type_tags(props)
|
|
@@ -12,6 +12,13 @@ import (
|
|
|
12
12
|
nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
13
13
|
)
|
|
14
14
|
|
|
15
|
+
// Check_templateProps is the argument record of Check_template, which builds the
|
|
16
|
+
// check entry of template literal types.
|
|
17
|
+
//
|
|
18
|
+
// @evidence contracts/common.md#principled-implementation It is the argument record of Check_template, which builds the check entry of template literal types; its 4 fields (Context, Templates, Input, Emit) are named so that a producer and a consumer cannot transpose them.
|
|
19
|
+
// @evidence contracts/common.md#clear-and-simple-design A 4-field record with no methods.
|
|
20
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
21
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is.
|
|
15
22
|
type Check_templateProps struct {
|
|
16
23
|
Context nativecontext.ITypiaContext
|
|
17
24
|
Templates []*nativemetadata.MetadataTemplate
|
|
@@ -19,6 +26,14 @@ type Check_templateProps struct {
|
|
|
19
26
|
Emit *shimprinter.EmitContext
|
|
20
27
|
}
|
|
21
28
|
|
|
29
|
+
// Check_template builds the check entry of template literal types: a string
|
|
30
|
+
// guard plus one `RegExp(...).test` per template, with the type tags inlined
|
|
31
|
+
// into the member when several templates are neighbors.
|
|
32
|
+
//
|
|
33
|
+
// @evidence contracts/common.md#principled-implementation It builds the check entry of template literal types: a string guard plus one `RegExp(...).test` per template, with the type tags inlined into the member when several templates are neighbors.
|
|
34
|
+
// @evidence contracts/common.md#clear-and-simple-design One exported function; the pieces that repeat live in private helpers of the same file.
|
|
35
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Its inputs are its arguments and the context they carry, and it keeps no state of its own.
|
|
36
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what it builds.
|
|
22
37
|
func Check_template(props Check_templateProps) nativehelpers.ICheckEntry {
|
|
23
38
|
f := nativecontext.EmitFactoryOf(check_template_factory, props.Emit)
|
|
24
39
|
conditions := []*shimast.Node{
|
|
@@ -6,9 +6,19 @@ import (
|
|
|
6
6
|
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
7
7
|
shimprinter "github.com/microsoft/typescript-go/shim/printer"
|
|
8
8
|
nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
|
|
9
|
+
nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
|
|
9
10
|
nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
10
11
|
)
|
|
11
12
|
|
|
13
|
+
// Decode_union_objectProps is the argument record of Decode_union_object, which
|
|
14
|
+
// decodes a union of object types. Checker and Decoder receive one object type
|
|
15
|
+
// at a time, Success wraps a checker result and Escaper builds the failure when
|
|
16
|
+
// no object type matches.
|
|
17
|
+
//
|
|
18
|
+
// @evidence contracts/common.md#principled-implementation It is the argument record of Decode_union_object, which decodes a union of object types; its 8 fields (Checker, Decoder, Success, Escaper, Objects, Input, Explore, Emit) are named so that a producer and a consumer cannot transpose them.
|
|
19
|
+
// @evidence contracts/common.md#clear-and-simple-design A 8-field record with no methods.
|
|
20
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
21
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is and explains its non-obvious fields.
|
|
12
22
|
type Decode_union_objectProps struct {
|
|
13
23
|
Checker func(next Decode_union_object_next) *shimast.Node
|
|
14
24
|
Decoder func(next Decode_union_object_next) *shimast.Node
|
|
@@ -16,21 +26,44 @@ type Decode_union_objectProps struct {
|
|
|
16
26
|
Escaper func(next Decode_union_object_escape) *shimast.Node
|
|
17
27
|
Objects []*nativemetadata.MetadataObjectType
|
|
18
28
|
Input *shimast.Expression
|
|
19
|
-
Explore
|
|
29
|
+
Explore nativehelpers.UnionExplorer_IExplore
|
|
20
30
|
Emit *shimprinter.EmitContext
|
|
21
31
|
}
|
|
22
32
|
|
|
33
|
+
// Decode_union_object_next is the argument of the Checker and Decoder callbacks
|
|
34
|
+
// of Decode_union_object: the input and the one object type to consider.
|
|
35
|
+
//
|
|
36
|
+
// @evidence contracts/common.md#principled-implementation It is the argument of the Checker and Decoder callbacks of Decode_union_object: the input and the one object type to consider; its 3 fields (Input, Object, Explore) are named so that a producer and a consumer cannot transpose them.
|
|
37
|
+
// @evidence contracts/common.md#clear-and-simple-design A 3-field record with no methods.
|
|
38
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
39
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is.
|
|
23
40
|
type Decode_union_object_next struct {
|
|
24
41
|
Input *shimast.Expression
|
|
25
42
|
Object *nativemetadata.MetadataObjectType
|
|
26
|
-
Explore
|
|
43
|
+
Explore nativehelpers.UnionExplorer_IExplore
|
|
27
44
|
}
|
|
28
45
|
|
|
46
|
+
// Decode_union_object_escape is the argument of the Escaper callback of
|
|
47
|
+
// Decode_union_object: the input and the description of the expected union.
|
|
48
|
+
//
|
|
49
|
+
// @evidence contracts/common.md#principled-implementation It is the argument of the Escaper callback of Decode_union_object: the input and the description of the expected union; its 2 fields (Input, Expected) are named so that a producer and a consumer cannot transpose them.
|
|
50
|
+
// @evidence contracts/common.md#clear-and-simple-design A 2-field record with no methods.
|
|
51
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
52
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is.
|
|
29
53
|
type Decode_union_object_escape struct {
|
|
30
54
|
Input *shimast.Expression
|
|
31
55
|
Expected string
|
|
32
56
|
}
|
|
33
57
|
|
|
58
|
+
// Decode_union_object builds an immediately invoked function that tries each
|
|
59
|
+
// object type in order with its checker and returns the decoded value of the
|
|
60
|
+
// first match, and falls back to the escaper when none matches; a checker that
|
|
61
|
+
// is always true ends the search.
|
|
62
|
+
//
|
|
63
|
+
// @evidence contracts/common.md#principled-implementation It builds an immediately invoked function that tries each object type in order with its checker and returns the decoded value of the first match, and falls back to the escaper when none matches; a checker that is always true ends the search.
|
|
64
|
+
// @evidence contracts/common.md#clear-and-simple-design One exported function; the pieces that repeat live in private helpers of the same file.
|
|
65
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Its inputs are its arguments and the context they carry, and it keeps no state of its own.
|
|
66
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what it builds.
|
|
34
67
|
func Decode_union_object(props Decode_union_objectProps) *shimast.Node {
|
|
35
68
|
unions := make([]decode_union_object_IUnion, 0, len(props.Objects))
|
|
36
69
|
names := make([]string, 0, len(props.Objects))
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
package iterate
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"fmt"
|
|
5
|
+
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
6
|
+
"github.com/samchon/ttsc/packages/ttsc/driver"
|
|
7
|
+
nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
|
|
8
|
+
factories "github.com/samchon/typia/packages/typia/native/core/factories"
|
|
9
|
+
metadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
10
|
+
"os"
|
|
11
|
+
"path/filepath"
|
|
12
|
+
"testing"
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
// TestExactOptionalCheckerEntryContract verifies compiler metadata reaches optional guards.
|
|
16
|
+
//
|
|
17
|
+
// The real Go checker reads optional-only, optional undefined-union and required
|
|
18
|
+
// undefined-union properties under unset/false/true exactOptionalPropertyTypes.
|
|
19
|
+
// Plugin undefined is independently omitted/false/true. Strict entries must
|
|
20
|
+
// remove optional decoding only in the exact=true, undefined=false conjunction,
|
|
21
|
+
// then allow an absent key through the object guard without mutating metadata.
|
|
22
|
+
//
|
|
23
|
+
// @evidence contracts/testing.md#behavioral-verification Loads three real TypeScript compiler contexts in process, analyzes all three property types, builds Feature_object_entries and inspects the resulting check_object AST for each undefined option row.
|
|
24
|
+
// @evidence contracts/testing.md#independent-expectations Authored property declarations and literal optional/required tables define the metadata oracle; exact optional-only requires an absence short circuit, while explicit undefined unions remain value-valid.
|
|
25
|
+
// @evidence contracts/testing.md#distinguishing-cases Compiler unset/false/true crosses plugin undefined omitted/false/true. Optional-only differs from optional and required explicit unions; only the strict entry changes decoded Optional and adds !in ||, and source metadata must remain unchanged.
|
|
26
|
+
// @evidence contracts/testing.md#execution-ownership The native Go runner loads temporary tsconfig/source files with driver.LoadProgram and closes each program. Checker, metadata and emitter calls remain in process, without Node or compiler subprocesses. This metadata/AST case does not claim JavaScript runtime observations.
|
|
27
|
+
func TestExactOptionalCheckerEntryContract(t *testing.T) {
|
|
28
|
+
compilerRows := []struct {
|
|
29
|
+
name, setting string
|
|
30
|
+
optionalRequired bool
|
|
31
|
+
}{
|
|
32
|
+
{"unset", "", false}, {"false", `,"exactOptionalPropertyTypes":false`, false}, {"true", `,"exactOptionalPropertyTypes":true`, true},
|
|
33
|
+
}
|
|
34
|
+
yes, no := true, false
|
|
35
|
+
undefinedRows := []struct {
|
|
36
|
+
name string
|
|
37
|
+
value *bool
|
|
38
|
+
}{{"omitted", nil}, {"false", &no}, {"true", &yes}}
|
|
39
|
+
expectedOptional := map[string]bool{"optional": true, "optionalUndefined": true, "requiredUndefined": false}
|
|
40
|
+
for _, compiler := range compilerRows {
|
|
41
|
+
t.Run(compiler.name, func(t *testing.T) {
|
|
42
|
+
dir := t.TempDir()
|
|
43
|
+
config := fmt.Sprintf(`{"compilerOptions":{"target":"ES2022","module":"commonjs","moduleResolution":"bundler","ignoreDeprecations":"6.0","strict":true,"skipLibCheck":true%s},"include":["main.ts"]}`, compiler.setting)
|
|
44
|
+
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(config), 0o644); err != nil {
|
|
45
|
+
t.Fatal(err)
|
|
46
|
+
}
|
|
47
|
+
const sourceText = `interface Example { optional?: string; optionalUndefined?: string | undefined; requiredUndefined: string | undefined; }
|
|
48
|
+
let input!: Example;
|
|
49
|
+
`
|
|
50
|
+
sourcePath := filepath.Join(dir, "main.ts")
|
|
51
|
+
if err := os.WriteFile(sourcePath, []byte(sourceText), 0o644); err != nil {
|
|
52
|
+
t.Fatal(err)
|
|
53
|
+
}
|
|
54
|
+
program, diagnostics, err := driver.LoadProgram(dir, "tsconfig.json", driver.LoadProgramOptions{})
|
|
55
|
+
if err != nil {
|
|
56
|
+
t.Fatal(err)
|
|
57
|
+
}
|
|
58
|
+
defer program.Close()
|
|
59
|
+
if len(diagnostics) != 0 {
|
|
60
|
+
t.Fatalf("fixture diagnostics: %+v", diagnostics)
|
|
61
|
+
}
|
|
62
|
+
source := program.SourceFile(sourcePath)
|
|
63
|
+
if source == nil || source.Statements == nil || len(source.Statements.Nodes) != 2 {
|
|
64
|
+
t.Fatal("fixture declarations missing")
|
|
65
|
+
}
|
|
66
|
+
declaration := source.Statements.Nodes[1].AsVariableStatement().DeclarationList.AsVariableDeclarationList().Declarations.Nodes[0]
|
|
67
|
+
result := factories.MetadataFactory.Analyze(factories.MetadataFactory_IProps{Checker: program.Checker, Options: factories.MetadataFactory_IOptions{}, Components: metadata.NewMetadataCollection(), Type: program.Checker.GetTypeAtLocation(declaration)})
|
|
68
|
+
if !result.Success || result.Data == nil || len(result.Data.Objects) != 1 {
|
|
69
|
+
t.Fatalf("metadata analysis failed: %+v", result.Errors)
|
|
70
|
+
}
|
|
71
|
+
object := result.Data.Objects[0].Type
|
|
72
|
+
if len(object.Properties) != 3 {
|
|
73
|
+
t.Fatalf("property count=%d", len(object.Properties))
|
|
74
|
+
}
|
|
75
|
+
for _, property := range object.Properties {
|
|
76
|
+
key := property.Key.GetSoleLiteral()
|
|
77
|
+
if key == nil {
|
|
78
|
+
t.Fatal("literal key missing")
|
|
79
|
+
}
|
|
80
|
+
wantOptional, known := expectedOptional[*key]
|
|
81
|
+
if !known {
|
|
82
|
+
t.Fatalf("unexpected fixture property %s", *key)
|
|
83
|
+
}
|
|
84
|
+
wantRequired := *key == "optional" && compiler.optionalRequired
|
|
85
|
+
if property.Value.Optional != wantOptional || property.Value.Required != wantRequired || len(property.Value.Atomics) != 1 || property.Value.Atomics[0].Type != "string" {
|
|
86
|
+
t.Fatalf("%s metadata Optional=%v Required=%v Atomics=%+v", *key, property.Value.Optional, property.Value.Required, property.Value.Atomics)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
|
|
90
|
+
input := factory.NewIdentifier("candidate")
|
|
91
|
+
for _, undefined := range undefinedRows {
|
|
92
|
+
t.Run("undefined="+undefined.name, func(t *testing.T) {
|
|
93
|
+
context := nativecontext.ITypiaContext{Program: program, Checker: program.Checker, CompilerOptions: program.ParsedConfig.ParsedConfig.CompilerOptions, Options: nativecontext.ITransformOptions{Undefined: undefined.value}}
|
|
94
|
+
decoded := map[string]*metadata.MetadataSchema{}
|
|
95
|
+
entries := Feature_object_entries(Feature_object_entriesProps{Context: context, Object: object, Input: input, Config: Feature_object_entriesConfig{Decoder: func(props Feature_object_entriesDecoderProps) *shimast.Node {
|
|
96
|
+
decoded[*props.Key] = props.Metadata
|
|
97
|
+
return factory.NewIdentifier("decoded")
|
|
98
|
+
}}})
|
|
99
|
+
if len(entries) != 3 {
|
|
100
|
+
t.Fatalf("entry count=%d", len(entries))
|
|
101
|
+
}
|
|
102
|
+
for _, entry := range entries {
|
|
103
|
+
key := entry.Key.GetSoleLiteral()
|
|
104
|
+
if key == nil {
|
|
105
|
+
t.Fatal("entry key missing")
|
|
106
|
+
}
|
|
107
|
+
wantExact := compiler.name == "true" && undefined.name == "false" && expectedOptional[*key]
|
|
108
|
+
wantStrict := wantExact && *key == "optional"
|
|
109
|
+
if entry.OptionalProperty != wantExact || entry.StrictOptionalUndefined != wantStrict {
|
|
110
|
+
t.Fatalf("%s entry exact=%v strict=%v", *key, entry.OptionalProperty, entry.StrictOptionalUndefined)
|
|
111
|
+
}
|
|
112
|
+
if entry.Meta.Optional != expectedOptional[*key] || decoded[*key].Optional != (expectedOptional[*key] && !wantStrict) {
|
|
113
|
+
t.Fatalf("%s source or decoder optionality changed incorrectly", *key)
|
|
114
|
+
}
|
|
115
|
+
wrapped := check_object_regular_expression(Check_objectProps{Context: context, Input: input}, entry)
|
|
116
|
+
if !wantStrict {
|
|
117
|
+
if wrapped != entry.Expression {
|
|
118
|
+
t.Fatalf("%s acquired an unrelated presence guard", *key)
|
|
119
|
+
}
|
|
120
|
+
continue
|
|
121
|
+
}
|
|
122
|
+
if wrapped.Kind != shimast.KindBinaryExpression {
|
|
123
|
+
t.Fatal("strict entry missing absence short circuit")
|
|
124
|
+
}
|
|
125
|
+
outer := wrapped.AsBinaryExpression()
|
|
126
|
+
if outer.OperatorToken.Kind != shimast.KindBarBarToken || outer.Right != entry.Expression || outer.Left.Kind != shimast.KindPrefixUnaryExpression {
|
|
127
|
+
t.Fatal("strict entry must be absence || decoded value")
|
|
128
|
+
}
|
|
129
|
+
prefix := outer.Left.AsPrefixUnaryExpression()
|
|
130
|
+
if prefix.Operator != shimast.KindExclamationToken || prefix.Operand.Kind != shimast.KindBinaryExpression {
|
|
131
|
+
t.Fatal("absence must negate key presence")
|
|
132
|
+
}
|
|
133
|
+
presence := prefix.Operand.AsBinaryExpression()
|
|
134
|
+
if presence.OperatorToken.Kind != shimast.KindInKeyword || presence.Right != input || presence.Left.Kind != shimast.KindStringLiteral || shimast.NodeText(presence.Left) != "optional" {
|
|
135
|
+
t.Fatal("presence must test original optional key and input")
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
package iterate
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
5
|
+
"github.com/samchon/ttsc/packages/ttsc/driver"
|
|
6
|
+
nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
|
|
7
|
+
factories "github.com/samchon/typia/packages/typia/native/core/factories"
|
|
8
|
+
helpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
|
|
9
|
+
metadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
10
|
+
"os"
|
|
11
|
+
"path/filepath"
|
|
12
|
+
"testing"
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
// TestExactOptionalGraphCloneRandomContract preserves the removed suite's declaration graph.
|
|
16
|
+
//
|
|
17
|
+
// Root, nested, array-element and discriminated-union declarations retain the
|
|
18
|
+
// distinction between absent optional keys and explicitly allowed undefined.
|
|
19
|
+
// Clone emits conditional own-property assignments for optional keys; random
|
|
20
|
+
// emits both omission and inclusion branches and removes implicit undefined
|
|
21
|
+
// from optional-only included values without mutating source metadata.
|
|
22
|
+
//
|
|
23
|
+
// @evidence contracts/testing.md#behavioral-verification Real checker metadata for both original interface graphs flows through Feature_object_entries, object guard, CloneJoiner.Object and RandomJoiner.Object. Literal guards, assignment keys, branch properties and decoder metadata are inspected in the generated AST.
|
|
24
|
+
// @evidence contracts/testing.md#independent-expectations Original field declarations and independent literal key/type/optional tables define expectations. Missing clone keys require empty false branches, explicit undefined unions require key-presence alternatives and required undefined must remain an unconditional own assignment.
|
|
25
|
+
// @evidence contracts/testing.md#distinguishing-cases Root/nested/array/union optional-only and explicit-union positions survive. Required string and required undefined are controls; random false/true inclusion produces empty versus own-key assignment branches, with string versus nested number value types retained.
|
|
26
|
+
// @evidence contracts/testing.md#execution-ownership The Go runner loads and closes one compiler program in process, then calls actual metadata and emitter operations. It launches no Node or compiler subprocess and does not interpret JavaScript or certify runtime TypeGuardError class identity.
|
|
27
|
+
func TestExactOptionalGraphCloneRandomContract(t *testing.T) {
|
|
28
|
+
dir := t.TempDir()
|
|
29
|
+
config := `{"compilerOptions":{"target":"ES2022","module":"commonjs","moduleResolution":"bundler","ignoreDeprecations":"6.0","strict":true,"exactOptionalPropertyTypes":true,"skipLibCheck":true},"include":["main.ts"]}`
|
|
30
|
+
sourceText := `interface IExactOptional { required: string; optional?: string; optionalUndefined?: string | undefined; requiredUndefined: string | undefined; nested?: IExactOptionalNested; array: IExactOptionalNested[]; union: IExactOptionalUnion; }
|
|
31
|
+
interface IExactOptionalNested { optional?: number; optionalUndefined?: number | undefined; }
|
|
32
|
+
type IExactOptionalUnion = { type: "a"; optional?: string; optionalUndefined?: string | undefined; } | { type: "b"; value: string; };
|
|
33
|
+
interface IExactOptionalClone { required: string; optional?: string; optionalUndefined?: string | undefined; requiredUndefined: string | undefined; nested: IExactOptionalCloneNested; array: IExactOptionalCloneNested[]; }
|
|
34
|
+
interface IExactOptionalCloneNested { optional?: number; optionalUndefined?: number | undefined; }
|
|
35
|
+
let root!: IExactOptional; let clone!: IExactOptionalClone;
|
|
36
|
+
`
|
|
37
|
+
for name, text := range map[string]string{"tsconfig.json": config, "main.ts": sourceText} {
|
|
38
|
+
if err := os.WriteFile(filepath.Join(dir, name), []byte(text), 0o644); err != nil {
|
|
39
|
+
t.Fatal(err)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
program, diagnostics, err := driver.LoadProgram(dir, "tsconfig.json", driver.LoadProgramOptions{})
|
|
43
|
+
if err != nil {
|
|
44
|
+
t.Fatal(err)
|
|
45
|
+
}
|
|
46
|
+
defer program.Close()
|
|
47
|
+
if len(diagnostics) != 0 {
|
|
48
|
+
t.Fatalf("fixture diagnostics: %+v", diagnostics)
|
|
49
|
+
}
|
|
50
|
+
source := program.SourceFile(filepath.Join(dir, "main.ts"))
|
|
51
|
+
if source == nil || source.Statements == nil || len(source.Statements.Nodes) != 7 {
|
|
52
|
+
t.Fatal("original fixture graph declarations missing")
|
|
53
|
+
}
|
|
54
|
+
no := false
|
|
55
|
+
context := nativecontext.ITypiaContext{Program: program, Checker: program.Checker, CompilerOptions: program.ParsedConfig.ParsedConfig.CompilerOptions, Options: nativecontext.ITransformOptions{Undefined: &no}}
|
|
56
|
+
factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
|
|
57
|
+
input := factory.NewIdentifier("candidate")
|
|
58
|
+
for _, rootIndex := range []int{5, 6} {
|
|
59
|
+
collection := metadata.NewMetadataCollection()
|
|
60
|
+
declaration := source.Statements.Nodes[rootIndex].AsVariableStatement().DeclarationList.AsVariableDeclarationList().Declarations.Nodes[0]
|
|
61
|
+
result := factories.MetadataFactory.Analyze(factories.MetadataFactory_IProps{Checker: program.Checker, Options: factories.MetadataFactory_IOptions{Constant: true, Absorb: true}, Components: collection, Type: program.Checker.GetTypeAtLocation(declaration)})
|
|
62
|
+
if !result.Success || result.Data == nil || len(result.Data.Objects) != 1 {
|
|
63
|
+
t.Fatalf("graph analysis failed: %+v", result.Errors)
|
|
64
|
+
}
|
|
65
|
+
objects := collection.Objects()
|
|
66
|
+
wantObjects := 4
|
|
67
|
+
if rootIndex == 6 {
|
|
68
|
+
wantObjects = 2
|
|
69
|
+
}
|
|
70
|
+
if len(objects) != wantObjects {
|
|
71
|
+
t.Fatalf("graph object count=%d want %d", len(objects), wantObjects)
|
|
72
|
+
}
|
|
73
|
+
root := result.Data.Objects[0].Type
|
|
74
|
+
properties := map[string]*metadata.MetadataSchema{}
|
|
75
|
+
for _, p := range root.Properties {
|
|
76
|
+
properties[*p.Key.GetSoleLiteral()] = p.Value
|
|
77
|
+
}
|
|
78
|
+
if len(properties["array"].Arrays) != 1 || len(properties["array"].Arrays[0].Type.Value.Objects) != 1 || len(properties["nested"].Objects) != 1 || properties["array"].Arrays[0].Type.Value.Objects[0].Type != properties["nested"].Objects[0].Type {
|
|
79
|
+
t.Fatal("nested and array element must retain the same declared object")
|
|
80
|
+
}
|
|
81
|
+
if rootIndex == 5 && len(properties["union"].Objects) != 2 {
|
|
82
|
+
t.Fatal("both authored union arms must survive")
|
|
83
|
+
}
|
|
84
|
+
for _, object := range objects {
|
|
85
|
+
t.Run(object.Name, func(t *testing.T) {
|
|
86
|
+
originalOptional := map[string]bool{}
|
|
87
|
+
decoded := map[string]*metadata.MetadataSchema{}
|
|
88
|
+
for _, p := range object.Properties {
|
|
89
|
+
key := *p.Key.GetSoleLiteral()
|
|
90
|
+
originalOptional[key] = p.Value.Optional
|
|
91
|
+
if key == "optional" || key == "optionalUndefined" {
|
|
92
|
+
wantRequired := key == "optional"
|
|
93
|
+
if !p.Value.Optional || p.Value.Required != wantRequired || len(p.Value.Atomics) != 1 {
|
|
94
|
+
t.Fatalf("%s optional metadata differs", key)
|
|
95
|
+
}
|
|
96
|
+
wantType := "string"
|
|
97
|
+
if object.Name == "IExactOptionalNested" || object.Name == "IExactOptionalCloneNested" {
|
|
98
|
+
wantType = "number"
|
|
99
|
+
}
|
|
100
|
+
if p.Value.Atomics[0].Type != wantType {
|
|
101
|
+
t.Fatalf("%s must retain %s", key, wantType)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
entries := Feature_object_entries(Feature_object_entriesProps{Context: context, Object: object, Input: input, Config: Feature_object_entriesConfig{Trace: true, Decoder: func(props Feature_object_entriesDecoderProps) *shimast.Node {
|
|
106
|
+
key := *props.Key
|
|
107
|
+
// Explore.Postfix is JavaScript expression text; all authored keys are identifiers.
|
|
108
|
+
// The literal must spell the .key path, including its source quotes.
|
|
109
|
+
if props.Explore.Postfix != `".`+key+`"` {
|
|
110
|
+
t.Fatalf("wrong property diagnostic suffix for %s: %s", key, props.Explore.Postfix)
|
|
111
|
+
}
|
|
112
|
+
decoded[key] = props.Metadata
|
|
113
|
+
return factory.NewIdentifier("decoded_" + key)
|
|
114
|
+
}}})
|
|
115
|
+
for _, entry := range entries {
|
|
116
|
+
key := *entry.Key.GetSoleLiteral()
|
|
117
|
+
wantStrict := key == "optional" || key == "nested" && rootIndex == 5
|
|
118
|
+
if entry.StrictOptionalUndefined != wantStrict || entry.OptionalProperty != originalOptional[key] {
|
|
119
|
+
t.Fatalf("%s optional entry differs", key)
|
|
120
|
+
}
|
|
121
|
+
if entry.Meta.Optional != originalOptional[key] || decoded[key].Optional != (originalOptional[key] && !wantStrict) {
|
|
122
|
+
t.Fatalf("%s decoder/source optionality differs", key)
|
|
123
|
+
}
|
|
124
|
+
guarded := check_object_regular_expression(Check_objectProps{Context: context, Input: input}, entry)
|
|
125
|
+
if wantStrict {
|
|
126
|
+
if guarded.Kind != shimast.KindBinaryExpression || guarded.AsBinaryExpression().OperatorToken.Kind != shimast.KindBarBarToken || guarded.AsBinaryExpression().Right != entry.Expression {
|
|
127
|
+
t.Fatalf("%s strict absence guard missing", key)
|
|
128
|
+
}
|
|
129
|
+
} else if guarded != entry.Expression {
|
|
130
|
+
t.Fatalf("%s unexpected absence guard", key)
|
|
131
|
+
}
|
|
132
|
+
cloned := helpers.CloneJoiner.Object(helpers.CloneJoiner_ObjectProps{Input: input, Entries: []helpers.IExpressionEntry{entry}})
|
|
133
|
+
property := cloned.AsObjectLiteralExpression().Properties.Nodes[0]
|
|
134
|
+
if entry.OptionalProperty {
|
|
135
|
+
if property.Kind != shimast.KindSpreadAssignment {
|
|
136
|
+
t.Fatalf("%s optional clone must conditionally spread own property", key)
|
|
137
|
+
}
|
|
138
|
+
conditional := property.AsSpreadAssignment().Expression.AsParenthesizedExpression().Expression.AsConditionalExpression()
|
|
139
|
+
if len(conditional.WhenFalse.AsObjectLiteralExpression().Properties.Nodes) != 0 || len(conditional.WhenTrue.AsObjectLiteralExpression().Properties.Nodes) != 1 {
|
|
140
|
+
t.Fatalf("%s clone must choose empty or one own property", key)
|
|
141
|
+
}
|
|
142
|
+
assignment := conditional.WhenTrue.AsObjectLiteralExpression().Properties.Nodes[0]
|
|
143
|
+
if assignment.Kind != shimast.KindPropertyAssignment || assignment.Name().Text() != key || assignment.AsPropertyAssignment().Initializer != entry.Expression {
|
|
144
|
+
t.Fatalf("%s clone value/ownership changed", key)
|
|
145
|
+
}
|
|
146
|
+
condition := conditional.Condition.AsBinaryExpression()
|
|
147
|
+
if wantStrict {
|
|
148
|
+
if condition.OperatorToken.Kind != shimast.KindExclamationEqualsEqualsToken {
|
|
149
|
+
t.Fatalf("%s strict clone must reject undefined value", key)
|
|
150
|
+
}
|
|
151
|
+
} else {
|
|
152
|
+
if condition.OperatorToken.Kind != shimast.KindBarBarToken || condition.Right.AsBinaryExpression().OperatorToken.Kind != shimast.KindInKeyword || shimast.NodeText(condition.Right.AsBinaryExpression().Left) != key || condition.Right.AsBinaryExpression().Right != input {
|
|
153
|
+
t.Fatalf("%s explicit undefined must preserve present key", key)
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
} else if property.Kind != shimast.KindPropertyAssignment || property.Name().Text() != key || property.AsPropertyAssignment().Initializer != entry.Expression {
|
|
157
|
+
t.Fatalf("%s required clone must assign own value unconditionally", key)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for _, include := range []bool{false, true} {
|
|
161
|
+
decodeIndex := 0
|
|
162
|
+
generated := helpers.RandomJoiner.Object(helpers.RandomJoiner_ObjectProps{Object: object, OptionalProperty: func(m *metadata.MetadataSchema) bool {
|
|
163
|
+
return helpers.OptionPredicator.ExactOptionalProperty(context, m)
|
|
164
|
+
}, StrictOptionalUndefined: func(m *metadata.MetadataSchema) bool {
|
|
165
|
+
return helpers.OptionPredicator.StrictOptionalUndefined(context, m)
|
|
166
|
+
}, Optional: func() *shimast.Node {
|
|
167
|
+
if include {
|
|
168
|
+
return factory.NewKeywordExpression(shimast.KindTrueKeyword)
|
|
169
|
+
}
|
|
170
|
+
return factory.NewKeywordExpression(shimast.KindFalseKeyword)
|
|
171
|
+
}, Decode: func(m *metadata.MetadataSchema) *shimast.Node {
|
|
172
|
+
if decodeIndex >= len(object.Properties) {
|
|
173
|
+
t.Fatal("unexpected random decoder")
|
|
174
|
+
}
|
|
175
|
+
original := object.Properties[decodeIndex]
|
|
176
|
+
decodeIndex++
|
|
177
|
+
key := *original.Key.GetSoleLiteral()
|
|
178
|
+
strict := key == "optional" || key == "nested" && rootIndex == 5
|
|
179
|
+
if m.Optional != (original.Value.Optional && !strict) || m.Required != original.Value.Required || original.Value.Optional != originalOptional[key] {
|
|
180
|
+
t.Fatalf("%s random included metadata violates optional-only/explicit-undefined distinction", key)
|
|
181
|
+
}
|
|
182
|
+
return factory.NewIdentifier("generated_value")
|
|
183
|
+
}})
|
|
184
|
+
properties := generated.AsObjectLiteralExpression().Properties.Nodes
|
|
185
|
+
if len(properties) != len(object.Properties) {
|
|
186
|
+
t.Fatal("random property population changed")
|
|
187
|
+
}
|
|
188
|
+
for index, property := range properties {
|
|
189
|
+
key := *object.Properties[index].Key.GetSoleLiteral()
|
|
190
|
+
if originalOptional[key] {
|
|
191
|
+
if property.Kind != shimast.KindSpreadAssignment {
|
|
192
|
+
t.Fatalf("%s missing random inclusion branch", key)
|
|
193
|
+
}
|
|
194
|
+
conditional := property.AsSpreadAssignment().Expression.AsParenthesizedExpression().Expression.AsConditionalExpression()
|
|
195
|
+
wantKind := shimast.KindFalseKeyword
|
|
196
|
+
if include {
|
|
197
|
+
wantKind = shimast.KindTrueKeyword
|
|
198
|
+
}
|
|
199
|
+
if conditional.Condition.Kind != wantKind || len(conditional.WhenFalse.AsObjectLiteralExpression().Properties.Nodes) != 0 || conditional.WhenTrue.AsObjectLiteralExpression().Properties.Nodes[0].Name().Text() != key {
|
|
200
|
+
t.Fatalf("%s random inclusion/omission own-key contract changed", key)
|
|
201
|
+
}
|
|
202
|
+
} else if property.Kind != shimast.KindPropertyAssignment || property.Name().Text() != key {
|
|
203
|
+
t.Fatalf("%s random required own-key assignment missing", key)
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
if decodeIndex != len(object.Properties) {
|
|
207
|
+
t.Fatal("random decoder population changed")
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
@@ -9,6 +9,14 @@ import (
|
|
|
9
9
|
nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
10
10
|
)
|
|
11
11
|
|
|
12
|
+
// Feature_object_entriesProps is the argument record of Feature_object_entries,
|
|
13
|
+
// which turns the properties of an object type into expression entries. From
|
|
14
|
+
// names the parent kind and defaults to `object`.
|
|
15
|
+
//
|
|
16
|
+
// @evidence contracts/common.md#principled-implementation It is the argument record of Feature_object_entries, which turns the properties of an object type into expression entries; its 5 fields (Config, Context, Object, Input, From) are named so that a producer and a consumer cannot transpose them.
|
|
17
|
+
// @evidence contracts/common.md#clear-and-simple-design A 5-field record with no methods.
|
|
18
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
19
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is and explains its non-obvious fields.
|
|
12
20
|
type Feature_object_entriesProps struct {
|
|
13
21
|
Config Feature_object_entriesConfig
|
|
14
22
|
Context nativecontext.ITypiaContext
|
|
@@ -17,12 +25,28 @@ type Feature_object_entriesProps struct {
|
|
|
17
25
|
From string
|
|
18
26
|
}
|
|
19
27
|
|
|
28
|
+
// Feature_object_entriesConfig is the configuration of Feature_object_entries.
|
|
29
|
+
// Decoder decodes one property, and Path and Trace say whether the generated
|
|
30
|
+
// function tracks the value path and whether it reports the exception.
|
|
31
|
+
//
|
|
32
|
+
// @evidence contracts/common.md#principled-implementation It is the configuration of Feature_object_entries; its 3 members (Decoder, Path, Trace) are supplied by the caller, so the shared programmer holds no feature-specific behavior.
|
|
33
|
+
// @evidence contracts/common.md#clear-and-simple-design A 3-member record of values and callbacks.
|
|
34
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A declaration only.
|
|
35
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states the role and the meaning of the members that are not obvious.
|
|
20
36
|
type Feature_object_entriesConfig struct {
|
|
21
37
|
Decoder func(props Feature_object_entriesDecoderProps) *shimast.Node
|
|
22
38
|
Path bool
|
|
23
39
|
Trace bool
|
|
24
40
|
}
|
|
25
41
|
|
|
42
|
+
// Feature_object_entriesDecoderProps is the argument of the Decoder callback of
|
|
43
|
+
// Feature_object_entries: the property, its metadata, its sole key and input
|
|
44
|
+
// accessor, and the explore state.
|
|
45
|
+
//
|
|
46
|
+
// @evidence contracts/common.md#principled-implementation It is the argument of the Decoder callback of Feature_object_entries: the property, its metadata, its sole key and input accessor, and the explore state; its 5 fields (Metadata, Property, Key, Input, Explore) are named so that a producer and a consumer cannot transpose them.
|
|
47
|
+
// @evidence contracts/common.md#clear-and-simple-design A 5-field record with no methods.
|
|
48
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
49
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is.
|
|
26
50
|
type Feature_object_entriesDecoderProps struct {
|
|
27
51
|
Metadata *nativemetadata.MetadataSchema
|
|
28
52
|
Property *nativemetadata.MetadataProperty
|
|
@@ -31,6 +55,14 @@ type Feature_object_entriesDecoderProps struct {
|
|
|
31
55
|
Explore Feature_object_entriesExplore
|
|
32
56
|
}
|
|
33
57
|
|
|
58
|
+
// Feature_object_entriesExplore is the explore state that Feature_object_entries
|
|
59
|
+
// hands to its decoder. Tracable says whether the path is tracked, Source and
|
|
60
|
+
// From name the position and Postfix is the path suffix of the property.
|
|
61
|
+
//
|
|
62
|
+
// @evidence contracts/common.md#principled-implementation It is the explore state that Feature_object_entries hands to its decoder; its 4 fields (Tracable, Source, From, Postfix) are named so that a producer and a consumer cannot transpose them.
|
|
63
|
+
// @evidence contracts/common.md#clear-and-simple-design A 4-field record with no methods.
|
|
64
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts A data record: it derives, defaults and validates nothing.
|
|
65
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what the record is and explains its non-obvious fields.
|
|
34
66
|
type Feature_object_entriesExplore struct {
|
|
35
67
|
Tracable bool
|
|
36
68
|
Source string
|
|
@@ -38,6 +70,14 @@ type Feature_object_entriesExplore struct {
|
|
|
38
70
|
Postfix string
|
|
39
71
|
}
|
|
40
72
|
|
|
73
|
+
// Feature_object_entries decodes every property of an object type into an
|
|
74
|
+
// IExpressionEntry, with the optional flags decided by the options and, when
|
|
75
|
+
// tracing, a path postfix.
|
|
76
|
+
//
|
|
77
|
+
// @evidence contracts/common.md#principled-implementation It decodes every property of an object type into an IExpressionEntry, with the optional flags decided by the options and, when tracing, a path postfix.
|
|
78
|
+
// @evidence contracts/common.md#clear-and-simple-design One exported function; the pieces that repeat live in private helpers of the same file.
|
|
79
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Its inputs are its arguments and the context they carry, and it keeps no state of its own.
|
|
80
|
+
// @evidence contracts/common.md#meaningful-documentation The doc states what it builds.
|
|
41
81
|
func Feature_object_entries(props Feature_object_entriesProps) []nativehelpers.IExpressionEntry {
|
|
42
82
|
output := make([]nativehelpers.IExpressionEntry, 0, len(props.Object.Properties))
|
|
43
83
|
from := props.From
|
|
@@ -7,21 +7,27 @@ import (
|
|
|
7
7
|
"math/big"
|
|
8
8
|
"testing"
|
|
9
9
|
|
|
10
|
+
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
11
|
+
nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
|
|
10
12
|
nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
|
|
11
13
|
)
|
|
12
14
|
|
|
13
|
-
// TestIterateUtilityCoverage exercises schema and
|
|
15
|
+
// TestIterateUtilityCoverage exercises schema helpers and property classification.
|
|
14
16
|
//
|
|
15
17
|
// The iterate package contains many small helpers that are normally selected by
|
|
16
18
|
// very specific metadata shapes. This test builds those shapes directly so JSON
|
|
17
|
-
// schema attributes, native exports
|
|
19
|
+
// schema attributes, native exports and required-property classification
|
|
18
20
|
// remain covered without relying on broad TypeScript fixtures.
|
|
19
21
|
//
|
|
20
22
|
// 1. Apply x-prefixed JSDoc tags and cast their text values.
|
|
21
23
|
// 2. Export title, description, constant, escaped, template, and native schemas.
|
|
22
|
-
// 3. Build
|
|
23
|
-
// 4.
|
|
24
|
-
//
|
|
24
|
+
// 3. Build full JSON schema station outputs for empty, any, native, and union metadata.
|
|
25
|
+
// 4. Classify required, mixed optional and empty regular property populations.
|
|
26
|
+
//
|
|
27
|
+
// @evidence contracts/testing.md#behavioral-verification JSDoc casts and selected schema results are compared exactly. The actual dynamic-property helper must classify the original required string entry as all-required, reject the adjacent optional entry and accept an empty population. Remaining schema presence checks detect missing outputs only.
|
|
28
|
+
// @evidence contracts/testing.md#independent-expectations Authored JSDoc text and expected casts are independent. Required/optional flags establish the all-required outcomes, and an empty list contains no optional property; those expectations are not produced by the classifier. Non-nil schema checks have no semantic oracle.
|
|
29
|
+
// @evidence contracts/testing.md#distinguishing-cases The original required singleton is preserved beside a mixed optional negative and an empty boundary. Title, description, constants, escaped, template and native schema paths retain their existing checks without new negative twins.
|
|
30
|
+
// @evidence contracts/testing.md#execution-ownership The typia_native_internal Go command (go -C packages/typia/test test -tags typia_native_internal ../native/...) runs this same-package Test function in process. The tagged test calls helpers on constructed metadata with no checker, filesystem fixture or process.
|
|
25
31
|
func TestIterateUtilityCoverage(t *testing.T) {
|
|
26
32
|
schema := json_schema_jsDocTags(JsonSchema{}, []nativemetadata.IJsDocTagInfo{
|
|
27
33
|
{Name: "x-enabled", Text: []nativemetadata.IJsDocTagInfo_IText{{Kind: "text", Text: "true"}}},
|
|
@@ -76,6 +82,25 @@ func TestIterateUtilityCoverage(t *testing.T) {
|
|
|
76
82
|
|
|
77
83
|
literal := iterateLiteral("fixed")
|
|
78
84
|
stringMeta := iterateAtomic("string")
|
|
85
|
+
requiredInput := shimast.NewNodeFactory(shimast.NodeFactoryHooks{}).NewIdentifier("input")
|
|
86
|
+
requiredEntries := []nativehelpers.IExpressionEntry{
|
|
87
|
+
{Input: requiredInput, Key: literal, Meta: stringMeta, Expression: requiredInput},
|
|
88
|
+
}
|
|
89
|
+
if !check_dynamic_properties_every_required(requiredEntries) {
|
|
90
|
+
t.Fatal("the authored required string property must be classified as required")
|
|
91
|
+
}
|
|
92
|
+
optionalMeta := iterateAtomic("string")
|
|
93
|
+
optionalMeta.Required = false
|
|
94
|
+
optionalMeta.Optional = true
|
|
95
|
+
optionalEntries := append(requiredEntries, nativehelpers.IExpressionEntry{
|
|
96
|
+
Input: requiredInput, Key: iterateLiteral("optional"), Meta: optionalMeta, Expression: requiredInput,
|
|
97
|
+
})
|
|
98
|
+
if check_dynamic_properties_every_required(optionalEntries) {
|
|
99
|
+
t.Fatal("an optional property must prevent the all-required classification")
|
|
100
|
+
}
|
|
101
|
+
if !check_dynamic_properties_every_required(nil) {
|
|
102
|
+
t.Fatal("the empty property population has no optional entry")
|
|
103
|
+
}
|
|
79
104
|
constantDescription := "constant"
|
|
80
105
|
constantSchemas := json_schema_constant(nativemetadata.MetadataConstant_create(nativemetadata.MetadataConstant{
|
|
81
106
|
Type: "bigint",
|