diff --git a/.eslintrc.js b/.eslintrc.js
index fdbe786f1509f52d8c5ce9d719fbf61521006b75..dfeed5d012c14586b0ec10341fd48ae18dd36212 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -81,7 +81,8 @@ module.exports = {
 
     // TODO: fix lint
     '@typescript-eslint/no-explicit-any': 0,
-    '@typescript-eslint/no-non-null-assertion': 2,
+    // TODO: https://github.com/renovatebot/renovate/issues/7154
+    '@typescript-eslint/no-non-null-assertion': 0,
     '@typescript-eslint/no-unused-vars': [
       2,
       {
diff --git a/lib/modules/datasource/docker/index.ts b/lib/modules/datasource/docker/index.ts
index b1fc62122a362718de4acb7a197e86a27e6e1473..797ddc635a5610c0ec1586410173f7020e721abf 100644
--- a/lib/modules/datasource/docker/index.ts
+++ b/lib/modules/datasource/docker/index.ts
@@ -90,7 +90,7 @@ export async function getAuthHeaders(
         { registryHost, dockerRepository },
         `Using ecr auth for Docker registry`
       );
-      const [, region] = ecrRegex.exec(registryHost);
+      const [, region] = ecrRegex.exec(registryHost) ?? [];
       const auth = await getECRAuthToken(region, opts);
       if (auth) {
         opts.headers = { authorization: `Basic ${auth}` };
@@ -132,7 +132,7 @@ export async function getAuthHeaders(
         { registryHost, dockerRepository, authenticateHeader },
         `Invalid realm, testing direct auth`
       );
-      return opts.headers;
+      return opts.headers ?? null;
     }
 
     const authUrl = `${authenticateHeader.params.realm}?service=${authenticateHeader.params.service}&scope=repository:${dockerRepository}:pull`;
@@ -200,7 +200,7 @@ export async function getAuthHeaders(
 }
 
 async function getECRAuthToken(
-  region: string,
+  region: string | undefined,
   opts: HostRule
 ): Promise<string | null> {
   const config: ECRClientConfig = { region };
@@ -244,7 +244,7 @@ export function getRegistryRepository(
       }
       let dockerRepository = packageName.replace(registryEndingWithSlash, '');
       const fullUrl = `${registryHost}/${dockerRepository}`;
-      const { origin, pathname } = parseUrl(fullUrl);
+      const { origin, pathname } = parseUrl(fullUrl)!;
       registryHost = origin;
       dockerRepository = pathname.substring(1);
       return {
@@ -253,7 +253,7 @@ export function getRegistryRepository(
       };
     }
   }
-  let registryHost: string;
+  let registryHost: string | undefined;
   const split = packageName.split('/');
   if (split.length > 1 && (split[0].includes('.') || split[0].includes(':'))) {
     [registryHost] = split;
@@ -299,11 +299,12 @@ export function extractDigestFromResponseBody(
 }
 
 export function isECRMaxResultsError(err: HttpError): boolean {
+  const resp = err.response as HttpResponse<any> | undefined;
   return !!(
-    err.response?.statusCode === 405 &&
-    err.response?.headers?.['docker-distribution-api-version'] &&
+    resp?.statusCode === 405 &&
+    resp.headers?.['docker-distribution-api-version'] &&
     // https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeRepositories.html#ECR-DescribeRepositories-request-maxResults
-    err.response.body?.['errors']?.[0]?.message?.includes(
+    resp.body?.['errors']?.[0]?.message?.includes(
       'Member must have value less than or equal to 1000'
     )
   );
@@ -336,12 +337,12 @@ export const defaultConfig = {
   },
 };
 
-function findLatestStable(tags: string[]): string {
+function findLatestStable(tags: string[]): string | null {
   const versions = tags
     .filter((v) => dockerVersioning.isValid(v) && dockerVersioning.isStable(v))
     .sort((a, b) => dockerVersioning.sortVersions(a, b));
 
-  return versions.pop() ?? tags.slice(-1).pop();
+  return versions.pop() ?? tags.slice(-1).pop() ?? null;
 }
 
 export class DockerDatasource extends Datasource {
@@ -361,7 +362,7 @@ export class DockerDatasource extends Datasource {
     dockerRepository: string,
     tag: string,
     mode: 'head' | 'get' = 'get'
-  ): Promise<HttpResponse> {
+  ): Promise<HttpResponse | null> {
     logger.debug(
       `getManifestResponse(${registryHost}, ${dockerRepository}, ${tag})`
     );
@@ -442,7 +443,7 @@ export class DockerDatasource extends Datasource {
     registry: string,
     dockerRepository: string,
     tag: string
-  ): Promise<string> {
+  ): Promise<string | null> {
     const manifestResponse = await this.getManifestResponse(
       registry,
       dockerRepository,
@@ -653,17 +654,25 @@ export class DockerDatasource extends Datasource {
       `${registry}/api/v1/repository/${repository}/tag/?limit=${limit}&page=${page}&onlyActiveTags=true`;
 
     let page = 1;
-    let url = pageUrl(page);
-    do {
-      const res = await this.http.getJson<{
-        tags: { name: string }[];
+    let url: string | null = pageUrl(page);
+    while (url && page <= 20) {
+      interface QuayRestDockerTags {
+        tags: {
+          name: string;
+        }[];
         has_additional: boolean;
-      }>(url, {});
+      }
+
+      // typescript issue :-/
+      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+      const res = (await this.http.getJson<QuayRestDockerTags>(
+        url
+      )) as HttpResponse<QuayRestDockerTags>;
       const pageTags = res.body.tags.map((tag) => tag.name);
       tags = tags.concat(pageTags);
       page += 1;
       url = res.body.has_additional ? pageUrl(page) : null;
-    } while (url && page < 20);
+    }
     return tags;
   }
 
@@ -675,7 +684,9 @@ export class DockerDatasource extends Datasource {
     // AWS ECR limits the maximum number of results to 1000
     // See https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeRepositories.html#ECR-DescribeRepositories-request-maxResults
     const limit = ecrRegex.test(registryHost) ? 1000 : 10000;
-    let url = `${registryHost}/${dockerRepository}/tags/list?n=${limit}`;
+    let url:
+      | string
+      | null = `${registryHost}/${dockerRepository}/tags/list?n=${limit}`;
     url = ensurePathPrefix(url, '/v2');
     const headers = await getAuthHeaders(
       this.http,
@@ -792,7 +803,8 @@ export class DockerDatasource extends Datasource {
       const newTag = newValue || 'latest';
       const { registryHost, dockerRepository } = getRegistryRepository(
         packageName,
-        registryUrl
+        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+        registryUrl!
       );
       return `${registryHost}:${dockerRepository}:${newTag}`;
     },
@@ -803,13 +815,14 @@ export class DockerDatasource extends Datasource {
   ): Promise<string | null> {
     const { registryHost, dockerRepository } = getRegistryRepository(
       packageName,
-      registryUrl
+      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+      registryUrl!
     );
     logger.debug(
       `getDigest(${registryHost}, ${dockerRepository}, ${newValue})`
     );
     const newTag = newValue || 'latest';
-    let digest: string = null;
+    let digest: string | null = null;
     try {
       let manifestResponse = await this.getManifestResponse(
         registryHost,
@@ -832,7 +845,8 @@ export class DockerDatasource extends Datasource {
             dockerRepository,
             newTag
           );
-          digest = extractDigestFromResponseBody(manifestResponse);
+          // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+          digest = extractDigestFromResponseBody(manifestResponse!);
         }
         logger.debug({ digest }, 'Got docker digest');
       }
@@ -869,7 +883,8 @@ export class DockerDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     const { registryHost, dockerRepository } = getRegistryRepository(
       packageName,
-      registryUrl
+      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+      registryUrl!
     );
     const tags = await this.getTags(registryHost, dockerRepository);
     if (!tags) {
@@ -884,6 +899,11 @@ export class DockerDatasource extends Datasource {
     const latestTag = tags.includes('latest')
       ? 'latest'
       : findLatestStable(tags);
+
+    // istanbul ignore if: needs test
+    if (!latestTag) {
+      return ret;
+    }
     const labels = await this.getLabels(
       registryHost,
       dockerRepository,
diff --git a/lib/modules/datasource/galaxy-collection/index.ts b/lib/modules/datasource/galaxy-collection/index.ts
index e01008cac00733d9a0274fd487bbd2853ac83eb1..be8fd108d308452fafc6d99c4ad85405ede00879 100644
--- a/lib/modules/datasource/galaxy-collection/index.ts
+++ b/lib/modules/datasource/galaxy-collection/index.ts
@@ -1,3 +1,4 @@
+import is from '@sindresorhus/is';
 import pMap from 'p-map';
 import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
@@ -71,9 +72,9 @@ export class GalaxyCollectionDatasource extends Datasource {
       return release;
     });
 
-    let newestVersionDetails: VersionsDetailResult;
+    let newestVersionDetails: VersionsDetailResult | undefined;
     // asynchronously get release details
-    const enrichedReleases: Release[] = await pMap(
+    const enrichedReleases: (Release | null)[] = await pMap(
       releases,
       (basicRelease) =>
         this.http
@@ -109,7 +110,7 @@ export class GalaxyCollectionDatasource extends Datasource {
       { concurrency: 5 } // allow 5 requests at maximum in parallel
     );
     // filter failed versions
-    const filteredReleases = enrichedReleases.filter(Boolean);
+    const filteredReleases = enrichedReleases.filter(is.truthy);
     // extract base information which are only provided on the release from the newest release
     const result: ReleaseResult = {
       releases: filteredReleases,
diff --git a/lib/modules/datasource/galaxy/index.ts b/lib/modules/datasource/galaxy/index.ts
index a70e452f64e1cd1c81a693d1cb35beec6e68bdcd..3b9908b90c082b0a6e3c4437c30677661af3c7aa 100644
--- a/lib/modules/datasource/galaxy/index.ts
+++ b/lib/modules/datasource/galaxy/index.ts
@@ -37,7 +37,7 @@ export class GalaxyDatasource extends Datasource {
       projectName;
     const galaxyProjectUrl = registryUrl + userName + '/' + projectName;
 
-    let raw: HttpResponse<GalaxyResult> = null;
+    let raw: HttpResponse<GalaxyResult> | null = null;
     try {
       raw = await this.http.getJson<GalaxyResult>(galaxyAPIUrl);
     } catch (err) {
diff --git a/lib/modules/datasource/git-refs/base.ts b/lib/modules/datasource/git-refs/base.ts
index 952f6515bd6455ba1b40d927c051e1cfe70eb09b..d4d15e5dc931b013fc554c63c038f18c95e192c0 100644
--- a/lib/modules/datasource/git-refs/base.ts
+++ b/lib/modules/datasource/git-refs/base.ts
@@ -1,3 +1,4 @@
+import is from '@sindresorhus/is';
 import simpleGit from 'simple-git';
 import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
@@ -38,7 +39,7 @@ export class GitDatasource {
       .map((line) => line.trim())
       .map((line) => {
         let match = refMatch.exec(line);
-        if (match) {
+        if (match?.groups) {
           return {
             type: match.groups.type,
             value: match.groups.value,
@@ -46,7 +47,7 @@ export class GitDatasource {
           };
         }
         match = headMatch.exec(line);
-        if (match) {
+        if (match?.groups) {
           return {
             type: '',
             value: 'HEAD',
@@ -56,7 +57,7 @@ export class GitDatasource {
         logger.trace(`malformed ref: ${line}`);
         return null;
       })
-      .filter(Boolean)
+      .filter(is.truthy)
       .filter((ref) => ref.type !== 'pull' && !ref.value.endsWith('^{}'));
 
     return refs;
diff --git a/lib/modules/datasource/git-refs/index.ts b/lib/modules/datasource/git-refs/index.ts
index a2aaaceb6f4228fb497fdba8802c28f0059e5054..8f5ebd2d8110ae491023866dff850db0d3fcb356 100644
--- a/lib/modules/datasource/git-refs/index.ts
+++ b/lib/modules/datasource/git-refs/index.ts
@@ -24,11 +24,15 @@ export class GitRefsDatasource extends Datasource {
   override async getReleases({
     packageName,
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
-    const rawRefs: RawRefs[] = await GitDatasource.getRawRefs(
+    const rawRefs: RawRefs[] | null = await GitDatasource.getRawRefs(
       { packageName },
       this.id
     );
 
+    if (!rawRefs) {
+      return null;
+    }
+
     const refs = rawRefs
       .filter((ref) => ref.type === 'tags' || ref.type === 'heads')
       .map((ref) => ref.value);
@@ -44,7 +48,7 @@ export class GitRefsDatasource extends Datasource {
       releases: uniqueRefs.map((ref) => ({
         version: ref,
         gitRef: ref,
-        newDigest: rawRefs.find((rawRef) => rawRef.value === ref).hash,
+        newDigest: rawRefs.find((rawRef) => rawRef.value === ref)?.hash,
       })),
     };
 
@@ -55,11 +59,17 @@ export class GitRefsDatasource extends Datasource {
     { packageName }: DigestConfig,
     newValue?: string
   ): Promise<string | null> {
-    const rawRefs: RawRefs[] = await GitDatasource.getRawRefs(
+    const rawRefs: RawRefs[] | null = await GitDatasource.getRawRefs(
       { packageName },
       this.id
     );
-    let ref: RawRefs;
+
+    // istanbul ignore if
+    if (!rawRefs) {
+      return null;
+    }
+
+    let ref: RawRefs | undefined;
     if (newValue) {
       ref = rawRefs.find(
         (rawRef) =>
diff --git a/lib/modules/datasource/git-tags/index.ts b/lib/modules/datasource/git-tags/index.ts
index 6b2e1e669ba30ee297bf6e6fdc6a014d88601496..82dae616115da7a36e491148c3becf05f4223e37 100644
--- a/lib/modules/datasource/git-tags/index.ts
+++ b/lib/modules/datasource/git-tags/index.ts
@@ -51,7 +51,7 @@ export class GitTagsDatasource extends Datasource {
   ): Promise<string | null> {
     const rawRefs = await GitDatasource.getRawRefs({ packageName }, this.id);
     const findValue = newValue || 'HEAD';
-    const ref = rawRefs.find((rawRef) => rawRef.value === findValue);
+    const ref = rawRefs?.find((rawRef) => rawRef.value === findValue);
     if (ref) {
       return ref.hash;
     }
diff --git a/lib/modules/datasource/github-releases/common.ts b/lib/modules/datasource/github-releases/common.ts
index 991392ebcb42bc998538d8050cde754062b15b71..b0164ca1e1cc745574dba6b4c474c442a51b4fa1 100644
--- a/lib/modules/datasource/github-releases/common.ts
+++ b/lib/modules/datasource/github-releases/common.ts
@@ -2,12 +2,12 @@ import { ensureTrailingSlash } from '../../../util/url';
 
 const defaultSourceUrlBase = 'https://github.com/';
 
-export function getSourceUrlBase(registryUrl: string): string {
+export function getSourceUrlBase(registryUrl: string | undefined): string {
   // default to GitHub.com if no GHE host is specified.
   return ensureTrailingSlash(registryUrl ?? defaultSourceUrlBase);
 }
 
-export function getApiBaseUrl(registryUrl: string): string {
+export function getApiBaseUrl(registryUrl: string | undefined): string {
   const sourceUrlBase = getSourceUrlBase(registryUrl);
   return sourceUrlBase === defaultSourceUrlBase
     ? `https://api.github.com/`
diff --git a/lib/modules/datasource/github-releases/index.ts b/lib/modules/datasource/github-releases/index.ts
index cb1812b6e519f4753fbc8f1bde43e165598fd834..63f8db6ea1f186a41a69d0f0a404317e7cb09612 100644
--- a/lib/modules/datasource/github-releases/index.ts
+++ b/lib/modules/datasource/github-releases/index.ts
@@ -105,7 +105,7 @@ export class GithubReleasesDatasource extends Datasource {
   async findDigestAsset(
     release: GithubRelease,
     digest: string
-  ): Promise<DigestAsset> {
+  ): Promise<DigestAsset | null> {
     const digestFile = await this.findDigestFile(release, digest);
     if (digestFile) {
       return digestFile;
@@ -206,7 +206,7 @@ export class GithubReleasesDatasource extends Datasource {
       currentRelease,
       currentDigest
     );
-    let newDigest: string;
+    let newDigest: string | null;
     if (!digestAsset || newValue === currentValue) {
       newDigest = currentDigest;
     } else {
diff --git a/lib/modules/datasource/github-releases/test/index.ts b/lib/modules/datasource/github-releases/test/index.ts
index ee59f5769c43efe1d528abeacebea05faf9b3d07..f2d9a4f7fd0ca2bb228a6d8c2f5ce37fe82dbec1 100644
--- a/lib/modules/datasource/github-releases/test/index.ts
+++ b/lib/modules/datasource/github-releases/test/index.ts
@@ -1,4 +1,5 @@
 import * as httpMock from '../../../../../test/http-mock';
+import { partial } from '../../../../../test/util';
 import type { GithubRelease } from '../types';
 
 export class GitHubReleaseMocker {
@@ -15,12 +16,12 @@ export class GitHubReleaseMocker {
     version: string,
     assets: { [key: string]: string }
   ): GithubRelease {
-    const releaseData = {
+    const releaseData = partial<GithubRelease>({
       tag_name: version,
       published_at: '2020-03-09T11:00:00Z',
       prerelease: false,
       assets: [],
-    } as GithubRelease;
+    });
     for (const assetFn of Object.keys(assets)) {
       const assetPath = `/repos/${this.packageName}/releases/download/${version}/${assetFn}`;
       const assetData = assets[assetFn];
diff --git a/lib/modules/datasource/github-tags/index.ts b/lib/modules/datasource/github-tags/index.ts
index b0e6662ceba3f8dc72b7ab62407543286ec1f8fc..e54974d2d5c518097d3556b438a75691c7d16b9c 100644
--- a/lib/modules/datasource/github-tags/index.ts
+++ b/lib/modules/datasource/github-tags/index.ts
@@ -2,7 +2,12 @@ import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
 import { GithubReleasesDatasource } from '../github-releases';
 import { getApiBaseUrl, getSourceUrl } from '../github-releases/common';
-import type { DigestConfig, GetReleasesConfig, ReleaseResult } from '../types';
+import type {
+  DigestConfig,
+  GetReleasesConfig,
+  Release,
+  ReleaseResult,
+} from '../types';
 import type { GitHubTag, TagResponse } from './types';
 
 export class GithubTagsDatasource extends GithubReleasesDatasource {
@@ -19,7 +24,7 @@ export class GithubTagsDatasource extends GithubReleasesDatasource {
       `${registryUrl}:${githubRepo}:tag-${tag}`,
   })
   async getTagCommit(
-    registryUrl: string,
+    registryUrl: string | undefined,
     githubRepo: string,
     tag: string
   ): Promise<string | null> {
@@ -52,7 +57,7 @@ export class GithubTagsDatasource extends GithubReleasesDatasource {
       `${registryUrl}:${githubRepo}:commit`,
   })
   async getCommit(
-    registryUrl: string,
+    registryUrl: string | undefined,
     githubRepo: string
   ): Promise<string | null> {
     const apiBaseUrl = getApiBaseUrl(registryUrl);
@@ -82,8 +87,10 @@ export class GithubTagsDatasource extends GithubReleasesDatasource {
     newValue?: string
   ): Promise<string | null> {
     return newValue
-      ? this.getTagCommit(registryUrl, repo, newValue)
-      : this.getCommit(registryUrl, repo);
+      ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+        this.getTagCommit(registryUrl, repo!, newValue)
+      : // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+        this.getCommit(registryUrl, repo!);
   }
 
   @cache({
@@ -120,18 +127,23 @@ export class GithubTagsDatasource extends GithubReleasesDatasource {
   ): Promise<ReleaseResult | null> {
     const tagsResult = await this.getTags(config);
 
+    // istanbul ignore if
+    if (!tagsResult) {
+      return null;
+    }
+
     try {
       // Fetch additional data from releases endpoint when possible
       const releasesResult = await super.getReleases(config);
-      const releaseByVersion = {};
+      type PartialRelease = Omit<Release, 'version'>;
+
+      const releaseByVersion: Record<string, PartialRelease> = {};
       releasesResult?.releases?.forEach((release) => {
-        const key = release.version;
-        const value = { ...release };
-        delete value.version;
-        releaseByVersion[key] = value;
+        const { version, ...value } = release;
+        releaseByVersion[version] = value;
       });
 
-      const mergedReleases = [];
+      const mergedReleases: Release[] = [];
       tagsResult.releases.forEach((tag) => {
         const release = releaseByVersion[tag.version];
         mergedReleases.push({ ...release, ...tag });
diff --git a/lib/modules/versioning/distro.ts b/lib/modules/versioning/distro.ts
index bb250a7b728a965ef9a8817bb9a63b04ca9f06dd..eba5d8af9682dd141017d9a9c5346b78daa6a6cf 100644
--- a/lib/modules/versioning/distro.ts
+++ b/lib/modules/versioning/distro.ts
@@ -31,7 +31,6 @@ export class DistroInfo {
 
   constructor(distroJsonKey: DistroDataFile) {
     this._distroInfo = JSON.parse(
-      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
       dataFiles.get(distroJsonKey as DataFile)!.replace(/v([\d.]+)\b/gm, '$1')
     );
 
diff --git a/lib/modules/versioning/node/schedule.ts b/lib/modules/versioning/node/schedule.ts
index 4b298c6169ee198dfc012a3f713c18b50733c114..b346b5af2ebb17241e9d778336c46fb08f9e9fc9 100644
--- a/lib/modules/versioning/node/schedule.ts
+++ b/lib/modules/versioning/node/schedule.ts
@@ -12,7 +12,6 @@ interface NodeJsSchedule {
 export type NodeJsData = Record<string, NodeJsSchedule>;
 
 const nodeSchedule: NodeJsData = JSON.parse(
-  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
   dataFiles.get('data/node-js-schedule.json')!
 );
 
diff --git a/lib/util/emoji.ts b/lib/util/emoji.ts
index 273816e9b9dac1708c588ad0986ff9960fc62b97..f5b9375afbb22aa9952692b4c54fc77c7c362fb8 100644
--- a/lib/util/emoji.ts
+++ b/lib/util/emoji.ts
@@ -20,7 +20,6 @@ const hexCodesByShort = new Map<string, string>();
 function lazyInitMappings(): void {
   if (!mappingsInitialized) {
     const table: Record<string, string | string[]> = JSON.parse(
-      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
       dataFiles.get('node_modules/emojibase-data/en/shortcodes/github.json')!
     );
     for (const [hex, val] of Object.entries(table)) {
diff --git a/lib/util/git/url.ts b/lib/util/git/url.ts
index 9dff260a519083a272c336249f9ee659d1e54215..c6c44c19c370eccb9a1c45352909396347656215 100644
--- a/lib/util/git/url.ts
+++ b/lib/util/git/url.ts
@@ -6,7 +6,7 @@ import { regEx } from '../regex';
 export function getHttpUrl(url: string, token?: string): string {
   const parsedUrl = GitUrlParse(url);
 
-  parsedUrl.token = token;
+  parsedUrl.token = token ?? '';
 
   const protocol = regEx(/^https?$/).exec(parsedUrl.protocol)
     ? parsedUrl.protocol
diff --git a/test/http-mock.ts b/test/http-mock.ts
index a17672236a199aa51de5b13151ad079cf6ac94de..ad0edca9fe1d3de0edbc5618f52a46d1c409e63d 100644
--- a/test/http-mock.ts
+++ b/test/http-mock.ts
@@ -82,7 +82,7 @@ export function scope(basePath: BasePath, options?: nock.Options): nock.Scope {
 }
 
 export function getTrace(): RequestLogItem[] /* istanbul ignore next */ {
-  const errorLines = [];
+  const errorLines: string[] = [];
   if (missingLog.length) {
     errorLines.push('Missing mocks:');
     errorLines.push(...missingLog);
diff --git a/test/util.ts b/test/util.ts
index 93412766fbb9b8724481c6c624ef5a307dd7278b..8ce8d7ebe297caf99294daf3b6ee89ce78daf87a 100644
--- a/test/util.ts
+++ b/test/util.ts
@@ -51,7 +51,7 @@ export const defaultConfig = getConfig();
 export { getConfig };
 
 function getCallerFileName(): string | null {
-  let result = null;
+  let result: string | null = null;
 
   const prepareStackTrace = Error.prepareStackTrace;
   const stackTraceLimit = Error.stackTraceLimit;
@@ -64,7 +64,7 @@ function getCallerFileName(): string | null {
 
     const stack = err.stack as unknown as NodeJS.CallSite[];
 
-    let currentFile = null;
+    let currentFile: string | null = null;
     for (const frame of stack) {
       const fileName = frame.getFileName();
       if (!currentFile) {
@@ -85,7 +85,7 @@ function getCallerFileName(): string | null {
 }
 
 export function getFixturePath(fixtureFile: string, fixtureRoot = '.'): string {
-  const callerDir = upath.dirname(getCallerFileName());
+  const callerDir = upath.dirname(getCallerFileName()!);
   return upath.join(callerDir, fixtureRoot, '__fixtures__', fixtureFile);
 }
 
diff --git a/tsconfig.strict.json b/tsconfig.strict.json
index d613c4886a1482a3ce24d71c39d76a239c639310..d5884d441e520ad79674d6bff4cb8855c6f81855 100644
--- a/tsconfig.strict.json
+++ b/tsconfig.strict.json
@@ -38,24 +38,9 @@
     "lib/config/utils.ts",
     "lib/config/validation-helpers/managers.ts",
     "lib/config/validation.ts",
-    "lib/modules/datasource/adoptium-java/index.ts",
     "lib/modules/datasource/api.ts",
-    "lib/modules/datasource/artifactory/index.ts",
-    "lib/modules/datasource/cdnjs/index.ts",
     "lib/modules/datasource/datasource.ts",
-    "lib/modules/datasource/docker/common.ts",
-    "lib/modules/datasource/docker/index.ts",
-    "lib/modules/datasource/docker/quay.ts",
-    "lib/modules/datasource/galaxy-collection/index.ts",
-    "lib/modules/datasource/galaxy/index.ts",
-    "lib/modules/datasource/git-refs/base.ts",
-    "lib/modules/datasource/git-refs/index.ts",
-    "lib/modules/datasource/git-tags/index.ts",
-    "lib/modules/datasource/github-releases/common.ts",
-    "lib/modules/datasource/github-releases/digest.ts",
-    "lib/modules/datasource/github-releases/index.ts",
     "lib/modules/datasource/github-releases/test/index.ts",
-    "lib/modules/datasource/github-tags/index.ts",
     "lib/modules/datasource/gitlab-packages/index.ts",
     "lib/modules/datasource/gitlab-releases/index.ts",
     "lib/modules/datasource/gitlab-tags/index.ts",