type-coverage-core
Advanced tools
Comparing version 2.19.1 to 2.21.0
@@ -48,4 +48,4 @@ "use strict"; | ||
context.typeCheckResult.totalCount++; | ||
if (types.every((t) => typeIsAnyOrInTypeArguments(t, context.strict && !context.ignoreNested))) { | ||
const kind = types.every((t) => typeIsAnyOrInTypeArguments(t, false)) ? 1 /* any */ : 2 /* containsAny */; | ||
if (types.every((t) => typeIsAnyOrInTypeArguments(t, context.strict && !context.ignoreNested, context))) { | ||
const kind = types.every((t) => typeIsAnyOrInTypeArguments(t, false, context)) ? 1 /* any */ : 2 /* containsAny */; | ||
const success = collectAny(node, context, kind); | ||
@@ -61,10 +61,28 @@ if (!success) { | ||
} | ||
function typeIsAnyOrInTypeArguments(type, anyCanBeInTypeArguments) { | ||
function typeIsAnyOrInTypeArguments(type, anyCanBeInTypeArguments, context) { | ||
var _a; | ||
if (type.flags === ts.TypeFlags.Any) { | ||
return type.intrinsicName === 'any'; | ||
} | ||
if (type.flags === ts.TypeFlags.Object && type.symbol) { | ||
// foo: Object | ||
if (context.strict && !context.ignoreObject && type.symbol.escapedName === 'Object') { | ||
return true; | ||
} | ||
// foo: {} | ||
if (context.strict && | ||
!context.ignoreEmptyType && | ||
type.objectFlags === ts.ObjectFlags.Anonymous && | ||
type.getProperties().length === 0 && | ||
type.getCallSignatures().length === 0 && | ||
type.getConstructSignatures().length === 0 && | ||
type.symbol.flags === (ts.SymbolFlags.Transient | ts.SymbolFlags.TypeLiteral) && | ||
!((_a = type.symbol.members) === null || _a === void 0 ? void 0 : _a.size)) { | ||
return true; | ||
} | ||
} | ||
if (anyCanBeInTypeArguments && type.flags === ts.TypeFlags.Object) { | ||
const typeArguments = type.typeArguments; | ||
if (typeArguments) { | ||
return typeArguments.some((typeArgument) => typeIsAnyOrInTypeArguments(typeArgument, anyCanBeInTypeArguments)); | ||
return typeArguments.some((typeArgument) => typeIsAnyOrInTypeArguments(typeArgument, anyCanBeInTypeArguments, context)); | ||
} | ||
@@ -71,0 +89,0 @@ } |
@@ -111,2 +111,4 @@ "use strict"; | ||
ignoreNonNullAssertion: lintOptions.ignoreNonNullAssertion, | ||
ignoreObject: lintOptions.ignoreObject, | ||
ignoreEmptyType: lintOptions.ignoreEmptyType, | ||
}; | ||
@@ -161,2 +163,4 @@ sourceFile.forEachChild(node => { | ||
ignoreNonNullAssertion: false, | ||
ignoreObject: false, | ||
ignoreEmptyType: false, | ||
}; | ||
@@ -222,2 +226,4 @@ /** | ||
ignoreNonNullAssertion: lintOptions.ignoreNonNullAssertion, | ||
ignoreObject: lintOptions.ignoreObject, | ||
ignoreEmptyType: lintOptions.ignoreEmptyType, | ||
}; | ||
@@ -224,0 +230,0 @@ sourceFile.forEachChild(node => { |
@@ -63,2 +63,10 @@ import * as ts from 'typescript'; | ||
ignoreNonNullAssertion: boolean; | ||
/** | ||
* Object | ||
*/ | ||
ignoreObject: boolean; | ||
/** | ||
* {} | ||
*/ | ||
ignoreEmptyType: boolean; | ||
} | ||
@@ -65,0 +73,0 @@ export interface FileContext extends CommonOptions { |
{ | ||
"name": "type-coverage-core", | ||
"version": "2.19.1", | ||
"version": "2.21.0", | ||
"description": "A library to check type coverage for typescript code", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
56134
1588