[Gradle, JS] Warning on missed types and typings on genext npm dep

#KT-38331 fixed
This commit is contained in:
Ilya Goncharov
2020-07-06 18:39:32 +03:00
parent 1b3b2e539c
commit bb35509c38
@@ -26,11 +26,36 @@ class DtsResolver(val npmProject: NpmProject) {
.asSequence()
.filter { !considerGeneratingFlag || it.generateExternals }
.filter { it.scope == NORMAL || it.scope == OPTIONAL }
.mapNotNullTo(mutableSetOf()) { typeModules.resolve(it.key)?.let { file -> Dts(file.canonicalFile, it) } }
.mapNotNullTo(mutableSetOf()) { dependency ->
getDtsFromDependency(dependency, considerGeneratingFlag)
}
.sortedBy { it.inputKey }
.toList()
}
private fun getDtsFromDependency(
dependency: NpmDependency,
considerGeneratingFlag: Boolean
): Dts? {
val dts = typeModules.resolve(dependency.key)
?.let { file ->
Dts(file.canonicalFile, dependency)
}
if (dts == null && considerGeneratingFlag) {
warningOnMissedDTs(dependency)
}
return dts
}
private fun warningOnMissedDTs(dependency: NpmDependency) {
npmProject.project.logger.warn(
"""
No `types` or `typings` found for '$dependency'.
To find d.ts for dependency, fields `types` and `typings` should be declared in `package.json`
""".trimIndent()
)
}
class Dts(val file: File, val npmDependency: NpmDependency) {
val inputKey: String
get() = npmDependency.key + "@" + npmDependency.resolvedVersion + "#" + npmDependency.integrity