From afa98f54d0e4a7fd78e296b2206ee42aae6631d1 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Fri, 4 Feb 2022 22:50:14 +0300
Subject: [PATCH] refactor(datasource/sbt): Enable strict null checks (#14003)

---
 lib/datasource/sbt-package/index.ts | 17 +++++++++++------
 lib/datasource/sbt-plugin/index.ts  |  7 ++++++-
 lib/datasource/sbt-plugin/util.ts   |  2 +-
 tsconfig.strict.json                |  3 ---
 4 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/lib/datasource/sbt-package/index.ts b/lib/datasource/sbt-package/index.ts
index 5c889fa487..19df8ed91c 100644
--- a/lib/datasource/sbt-package/index.ts
+++ b/lib/datasource/sbt-package/index.ts
@@ -19,7 +19,7 @@ export async function getArtifactSubdirs(
   searchRoot: string,
   artifact: string,
   scalaVersion: string
-): Promise<string[]> {
+): Promise<string[] | null> {
   const { body: indexContent } = await downloadHttpProtocol(
     ensureTrailingSlash(searchRoot),
     'sbt'
@@ -53,8 +53,8 @@ export async function getArtifactSubdirs(
 
 export async function getPackageReleases(
   searchRoot: string,
-  artifactSubdirs: string[]
-): Promise<string[]> {
+  artifactSubdirs: string[] | null
+): Promise<string[] | null> {
   if (artifactSubdirs) {
     const releases: string[] = [];
     const parseReleases = (content: string): string[] =>
@@ -77,7 +77,7 @@ export async function getPackageReleases(
   return null;
 }
 
-export function getLatestVersion(versions: string[]): string | null {
+export function getLatestVersion(versions: string[] | null): string | null {
   if (versions?.length) {
     return versions.reduce((latestVersion, version) =>
       compare(version, latestVersion) === 1 ? version : latestVersion
@@ -88,8 +88,8 @@ export function getLatestVersion(versions: string[]): string | null {
 
 export async function getUrls(
   searchRoot: string,
-  artifactDirs: string[],
-  version: string
+  artifactDirs: string[] | null,
+  version: string | null
 ): Promise<Partial<ReleaseResult>> {
   const result: Partial<ReleaseResult> = {};
 
@@ -141,6 +141,11 @@ export async function getReleases({
   lookupName,
   registryUrl,
 }: GetReleasesConfig): Promise<ReleaseResult | null> {
+  // istanbul ignore if
+  if (!registryUrl) {
+    return null;
+  }
+
   const [groupId, artifactId] = lookupName.split(':');
   const groupIdSplit = groupId.split('.');
   const artifactIdSplit = artifactId.split('_');
diff --git a/lib/datasource/sbt-plugin/index.ts b/lib/datasource/sbt-plugin/index.ts
index 807e33c87f..4a975f13a7 100644
--- a/lib/datasource/sbt-plugin/index.ts
+++ b/lib/datasource/sbt-plugin/index.ts
@@ -23,7 +23,7 @@ async function resolvePluginReleases(
   rootUrl: string,
   artifact: string,
   scalaVersion: string
-): Promise<string[]> {
+): Promise<string[] | null> {
   const searchRoot = `${rootUrl}/${artifact}`;
   const parse = (content: string): string[] =>
     parseIndexDir(content, (x) => !regEx(/^\.+$/).test(x));
@@ -72,6 +72,11 @@ export async function getReleases({
   lookupName,
   registryUrl,
 }: GetReleasesConfig): Promise<ReleaseResult | null> {
+  // istanbul ignore if
+  if (!registryUrl) {
+    return null;
+  }
+
   const [groupId, artifactId] = lookupName.split(':');
   const groupIdSplit = groupId.split('.');
   const artifactIdSplit = artifactId.split('_');
diff --git a/lib/datasource/sbt-plugin/util.ts b/lib/datasource/sbt-plugin/util.ts
index 3bbb5a2525..364dfe6c08 100644
--- a/lib/datasource/sbt-plugin/util.ts
+++ b/lib/datasource/sbt-plugin/util.ts
@@ -7,6 +7,6 @@ export function parseIndexDir(
   content: string,
   filterFn = (x: string): boolean => !regEx(/^\.+/).test(x)
 ): string[] {
-  const unfiltered = content.match(/(?<=href=['"])[^'"]*(?=\/['"])/g) || [];
+  const unfiltered = content.match(/(?<=href=['"])[^'"]*(?=\/['"])/g) ?? [];
   return unfiltered.filter(filterFn);
 }
diff --git a/tsconfig.strict.json b/tsconfig.strict.json
index 9b29d056b2..a6360199ca 100644
--- a/tsconfig.strict.json
+++ b/tsconfig.strict.json
@@ -82,7 +82,6 @@
     "lib/datasource/aws-machine-image/index.ts",
     "lib/datasource/bitbucket-tags/index.ts",
     "lib/datasource/cdnjs/index.ts",
-    "lib/datasource/clojure/index.ts",
     "lib/datasource/crate/index.ts",
     "lib/datasource/datasource.ts",
     "lib/datasource/docker/common.ts",
@@ -130,8 +129,6 @@
     "lib/datasource/rubygems/get-rubygems-org.ts",
     "lib/datasource/rubygems/get.ts",
     "lib/datasource/rubygems/index.ts",
-    "lib/datasource/sbt-package/index.ts",
-    "lib/datasource/sbt-plugin/index.ts",
     "lib/datasource/terraform-module/base.ts",
     "lib/datasource/terraform-module/index.ts",
     "lib/datasource/terraform-provider/index.ts",
-- 
GitLab