From e4dbd4ad491f656aaa7f9da9d4dae2c18622a1e6 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Sat, 30 Jul 2022 17:28:31 +0300
Subject: [PATCH] fix(ci): Restrict template expressions (#16834)

* fix(ci): Restrict template expressions

* Fix

* Fix

* Fix
---
 .eslintrc.js                                       |  2 +-
 lib/config/validation.ts                           |  2 ++
 lib/logger/utils.spec.ts                           |  2 ++
 lib/modules/datasource/adoptium-java/index.ts      |  4 ++++
 lib/modules/datasource/artifactory/index.ts        |  2 ++
 lib/modules/datasource/cdnjs/index.spec.ts         |  2 ++
 lib/modules/datasource/cdnjs/index.ts              |  2 ++
 lib/modules/datasource/conan/index.ts              |  2 ++
 lib/modules/datasource/conda/index.ts              |  4 ++++
 lib/modules/datasource/crate/index.ts              |  2 ++
 lib/modules/datasource/docker/index.ts             |  2 ++
 lib/modules/datasource/galaxy-collection/index.ts  |  2 ++
 lib/modules/datasource/galaxy/index.ts             |  3 +++
 lib/modules/datasource/git-refs/base.ts            |  2 +-
 lib/modules/datasource/github-releases/index.ts    |  2 ++
 lib/modules/datasource/gitlab-packages/index.ts    |  2 ++
 lib/modules/datasource/gitlab-releases/index.ts    |  2 ++
 lib/modules/datasource/go/base.ts                  |  2 ++
 lib/modules/datasource/go/index.ts                 |  2 ++
 lib/modules/datasource/go/releases-goproxy.ts      |  2 ++
 lib/modules/datasource/golang-version/index.ts     |  2 ++
 lib/modules/datasource/gradle-version/index.ts     |  2 ++
 lib/modules/datasource/jenkins-plugins/index.ts    |  4 +++-
 lib/modules/datasource/maven/util.ts               |  4 ++++
 lib/modules/datasource/node/index.ts               |  2 ++
 lib/modules/datasource/npm/get.ts                  |  2 ++
 lib/modules/datasource/nuget/v2.ts                 |  2 ++
 lib/modules/datasource/nuget/v3.ts                 |  6 +++++-
 lib/modules/datasource/pod/index.ts                |  2 ++
 lib/modules/datasource/puppet-forge/index.ts       |  2 ++
 lib/modules/datasource/ruby-version/index.ts       |  2 ++
 lib/modules/datasource/rubygems/index.ts           |  2 ++
 lib/modules/datasource/terraform-module/index.ts   |  4 ++++
 lib/modules/datasource/terraform-provider/index.ts |  2 ++
 lib/modules/manager/bazel/update.ts                |  2 ++
 lib/modules/manager/bundler/extract.ts             |  2 ++
 lib/modules/manager/bundler/host-rules.ts          |  4 ++++
 lib/modules/manager/bundler/update-locked.ts       |  2 ++
 lib/modules/manager/composer/update-locked.ts      |  2 ++
 lib/modules/manager/composer/utils.ts              |  2 ++
 lib/modules/manager/git-submodules/artifacts.ts    |  2 ++
 lib/modules/manager/gitlabci/utils.ts              |  3 ++-
 lib/modules/manager/gomod/artifacts.ts             |  4 ++++
 lib/modules/manager/gomod/update.ts                |  2 ++
 lib/modules/manager/gradle/__testutil__/gradle.ts  |  6 +++++-
 lib/modules/manager/gradle/parser.ts               |  4 ++++
 lib/modules/manager/gradle/update.ts               |  2 ++
 lib/modules/manager/homebrew/extract.ts            |  2 ++
 lib/modules/manager/homebrew/update.ts             |  2 ++
 lib/modules/manager/kustomize/extract.ts           |  2 ++
 lib/modules/manager/npm/extract/locked-versions.ts |  4 ++++
 lib/modules/manager/npm/post-update/index.ts       |  2 ++
 lib/modules/manager/npm/post-update/lerna.ts       |  2 ++
 lib/modules/manager/npm/post-update/npm.ts         |  2 ++
 lib/modules/manager/npm/post-update/rules.ts       |  4 +++-
 lib/modules/manager/npm/post-update/yarn.ts        |  4 ++++
 lib/modules/manager/npm/update/dependency/index.ts |  8 ++++++++
 .../update/locked-dependency/package-lock/index.ts | 14 ++++++++++++++
 .../update/locked-dependency/yarn-lock/index.ts    |  6 ++++++
 lib/modules/platform/azure/index.ts                |  1 +
 lib/modules/platform/bitbucket-server/utils.ts     |  2 ++
 lib/modules/platform/bitbucket/index.ts            | 10 ++++++++++
 lib/modules/platform/gitea/index.spec.ts           |  4 ++++
 lib/modules/platform/github/index.ts               |  2 ++
 64 files changed, 184 insertions(+), 7 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js
index 31c4faa441..ffc4c8a23e 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -114,7 +114,7 @@ module.exports = {
     '@typescript-eslint/no-unsafe-argument': 0, // thousands of errors :-/
 
     '@typescript-eslint/restrict-template-expressions': [
-      1,
+      2,
       { allowNumber: true, allowBoolean: true },
     ],
     '@typescript-eslint/restrict-plus-operands': 2,
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index 92209fc4f7..a9ba6d08d8 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -196,6 +196,8 @@ export async function validateConfig(
         optionParents[key] &&
         optionParents[key] !== parentName
       ) {
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         const message = `${key} should only be configured within a "${optionParents[key]}" object. Was found in ${parentName}`;
         warnings.push({
           topic: `${parentPath ? `${parentPath}.` : ''}${key}`,
diff --git a/lib/logger/utils.spec.ts b/lib/logger/utils.spec.ts
index 3915857bc4..95b02ef5f0 100644
--- a/lib/logger/utils.spec.ts
+++ b/lib/logger/utils.spec.ts
@@ -23,6 +23,8 @@ describe('logger/utils', () => {
     // Mock when the function exits
     const mockExit = jest.spyOn(process, 'exit');
     mockExit.mockImplementationOnce((number) => {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       throw new Error(`process.exit: ${number}`);
     });
     expect(() => {
diff --git a/lib/modules/datasource/adoptium-java/index.ts b/lib/modules/datasource/adoptium-java/index.ts
index a92f8963c1..ec337967c8 100644
--- a/lib/modules/datasource/adoptium-java/index.ts
+++ b/lib/modules/datasource/adoptium-java/index.ts
@@ -54,6 +54,8 @@ export class AdoptiumJavaDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${getImageType(packageName)}`,
   })
   async getReleases({
@@ -65,6 +67,8 @@ export class AdoptiumJavaDatasource extends Datasource {
       { registryUrl, packageName, imageType },
       'fetching java release'
     );
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const url = `${registryUrl}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC&vendor=adoptium`;
 
     const result: ReleaseResult = {
diff --git a/lib/modules/datasource/artifactory/index.ts b/lib/modules/datasource/artifactory/index.ts
index e6669adaa7..9492924be1 100644
--- a/lib/modules/datasource/artifactory/index.ts
+++ b/lib/modules/datasource/artifactory/index.ts
@@ -24,6 +24,8 @@ export class ArtifactoryDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/cdnjs/index.spec.ts b/lib/modules/datasource/cdnjs/index.spec.ts
index 550b87d665..71c807634d 100644
--- a/lib/modules/datasource/cdnjs/index.spec.ts
+++ b/lib/modules/datasource/cdnjs/index.spec.ts
@@ -7,6 +7,8 @@ import { CdnJsDatasource } from '.';
 const baseUrl = 'https://api.cdnjs.com/';
 
 const pathFor = (s: string): string =>
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   `/libraries/${s.split('/').shift()}?fields=homepage,repository,assets`;
 
 describe('modules/datasource/cdnjs/index', () => {
diff --git a/lib/modules/datasource/cdnjs/index.ts b/lib/modules/datasource/cdnjs/index.ts
index 4960375561..5988d1b12d 100644
--- a/lib/modules/datasource/cdnjs/index.ts
+++ b/lib/modules/datasource/cdnjs/index.ts
@@ -24,6 +24,8 @@ export class CdnJsDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     // Each library contains multiple assets, so we cache at the library level instead of per-asset
     const library = packageName.split('/')[0];
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const url = `${registryUrl}libraries/${library}?fields=homepage,repository,assets`;
     let result: ReleaseResult | null = null;
     try {
diff --git a/lib/modules/datasource/conan/index.ts b/lib/modules/datasource/conan/index.ts
index 2889565e55..f85269a590 100644
--- a/lib/modules/datasource/conan/index.ts
+++ b/lib/modules/datasource/conan/index.ts
@@ -53,6 +53,8 @@ export class ConanDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/conda/index.ts b/lib/modules/datasource/conda/index.ts
index 18b82986ba..401ab3a0bd 100644
--- a/lib/modules/datasource/conda/index.ts
+++ b/lib/modules/datasource/conda/index.ts
@@ -23,6 +23,8 @@ export class CondaDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
@@ -31,6 +33,8 @@ export class CondaDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     logger.trace({ registryUrl, packageName }, 'fetching conda package');
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const url = `${registryUrl}${packageName}`;
 
     const result: ReleaseResult = {
diff --git a/lib/modules/datasource/crate/index.ts b/lib/modules/datasource/crate/index.ts
index cd4f723819..482903e4d9 100644
--- a/lib/modules/datasource/crate/index.ts
+++ b/lib/modules/datasource/crate/index.ts
@@ -38,6 +38,8 @@ export class CrateDatasource extends Datasource {
   @cache({
     namespace: `datasource-${CrateDatasource.id}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}/${packageName}`,
     cacheable: ({ registryUrl }: GetReleasesConfig) =>
       CrateDatasource.areReleasesCacheable(registryUrl),
diff --git a/lib/modules/datasource/docker/index.ts b/lib/modules/datasource/docker/index.ts
index 73b431f59d..09a410680a 100644
--- a/lib/modules/datasource/docker/index.ts
+++ b/lib/modules/datasource/docker/index.ts
@@ -845,6 +845,8 @@ export class DockerDatasource extends Datasource {
       registryUrl!
     );
     logger.debug(
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `getDigest(${registryHost}, ${dockerRepository}, ${newValue})`
     );
     const newTag = newValue ?? 'latest';
diff --git a/lib/modules/datasource/galaxy-collection/index.ts b/lib/modules/datasource/galaxy-collection/index.ts
index be8fd108d3..9e1fd5df9a 100644
--- a/lib/modules/datasource/galaxy-collection/index.ts
+++ b/lib/modules/datasource/galaxy-collection/index.ts
@@ -32,6 +32,8 @@ export class GalaxyCollectionDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     const [namespace, projectName] = packageName.split('.');
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const baseUrl = `${registryUrl}api/v2/collections/${namespace}/${projectName}/`;
 
     let baseUrlResponse: HttpResponse<BaseProjectResult>;
diff --git a/lib/modules/datasource/galaxy/index.ts b/lib/modules/datasource/galaxy/index.ts
index 2d5d7aa1f8..82e886c654 100644
--- a/lib/modules/datasource/galaxy/index.ts
+++ b/lib/modules/datasource/galaxy/index.ts
@@ -29,7 +29,10 @@ export class GalaxyDatasource extends Datasource {
     const userName = lookUp[0];
     const projectName = lookUp[1];
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const galaxyAPIUrl = `${registryUrl}api/v1/roles/?owner__username=${userName}&name=${projectName}`;
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const galaxyProjectUrl = `${registryUrl}${userName}/${projectName}`;
 
     let raw: HttpResponse<GalaxyResult> | null = null;
diff --git a/lib/modules/datasource/git-refs/base.ts b/lib/modules/datasource/git-refs/base.ts
index 3b3e656a78..eddd489e9c 100644
--- a/lib/modules/datasource/git-refs/base.ts
+++ b/lib/modules/datasource/git-refs/base.ts
@@ -1,5 +1,5 @@
 import is from '@sindresorhus/is';
-import simpleGit from 'simple-git';
+import { simpleGit } from 'simple-git';
 import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
 import { simpleGitConfig } from '../../../util/git/config';
diff --git a/lib/modules/datasource/github-releases/index.ts b/lib/modules/datasource/github-releases/index.ts
index 8ed5f66920..33d02b4f73 100644
--- a/lib/modules/datasource/github-releases/index.ts
+++ b/lib/modules/datasource/github-releases/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import hasha from 'hasha';
 import { logger } from '../../../logger';
 import { cache } from '../../../util/cache/package/decorator';
diff --git a/lib/modules/datasource/gitlab-packages/index.ts b/lib/modules/datasource/gitlab-packages/index.ts
index edc1d8f023..dd862e437b 100644
--- a/lib/modules/datasource/gitlab-packages/index.ts
+++ b/lib/modules/datasource/gitlab-packages/index.ts
@@ -43,6 +43,8 @@ export class GitlabPackagesDatasource extends Datasource {
   @cache({
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}-${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/gitlab-releases/index.ts b/lib/modules/datasource/gitlab-releases/index.ts
index 556362c55b..37182f47a3 100644
--- a/lib/modules/datasource/gitlab-releases/index.ts
+++ b/lib/modules/datasource/gitlab-releases/index.ts
@@ -19,6 +19,8 @@ export class GitlabReleasesDatasource extends Datasource {
   @cache({
     namespace: `datasource-${GitlabReleasesDatasource.id}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}/${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/go/base.ts b/lib/modules/datasource/go/base.ts
index b370c3bb02..b6bbc1a3dc 100644
--- a/lib/modules/datasource/go/base.ts
+++ b/lib/modules/datasource/go/base.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import URL from 'url';
 import { PlatformId } from '../../../constants';
 import { logger } from '../../../logger';
diff --git a/lib/modules/datasource/go/index.ts b/lib/modules/datasource/go/index.ts
index 1830ed81c7..8b58406455 100644
--- a/lib/modules/datasource/go/index.ts
+++ b/lib/modules/datasource/go/index.ts
@@ -25,6 +25,8 @@ export class GoDatasource extends Datasource {
 
   @cache({
     namespace: `datasource-${GoDatasource.id}`,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     key: ({ packageName }: Partial<DigestConfig>) => `${packageName}-digest`,
   })
   getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {
diff --git a/lib/modules/datasource/go/releases-goproxy.ts b/lib/modules/datasource/go/releases-goproxy.ts
index 27dced5604..0f98bbfbf9 100644
--- a/lib/modules/datasource/go/releases-goproxy.ts
+++ b/lib/modules/datasource/go/releases-goproxy.ts
@@ -229,6 +229,8 @@ export class GoProxyDatasource extends Datasource {
   static getCacheKey({ packageName }: GetReleasesConfig): string {
     const goproxy = process.env.GOPROXY;
     const noproxy = GoProxyDatasource.parseNoproxy();
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     return `${packageName}@@${goproxy}@@${noproxy?.toString()}`;
   }
 }
diff --git a/lib/modules/datasource/golang-version/index.ts b/lib/modules/datasource/golang-version/index.ts
index ecaeb25628..1b0ad45e54 100644
--- a/lib/modules/datasource/golang-version/index.ts
+++ b/lib/modules/datasource/golang-version/index.ts
@@ -40,6 +40,8 @@ export class GolangVersionDatasource extends Datasource {
       sourceUrl: 'https://github.com/golang/go',
       releases: [],
     };
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const golangVersionsUrl = `${registryUrl}master/internal/history/release.go`;
 
     const response = await this.http.get(golangVersionsUrl);
diff --git a/lib/modules/datasource/gradle-version/index.ts b/lib/modules/datasource/gradle-version/index.ts
index d2d8ddd679..0652e02c71 100644
--- a/lib/modules/datasource/gradle-version/index.ts
+++ b/lib/modules/datasource/gradle-version/index.ts
@@ -26,6 +26,8 @@ export class GradleVersionDatasource extends Datasource {
 
   @cache({
     namespace: `datasource-${GradleVersionDatasource.id}`,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/jenkins-plugins/index.ts b/lib/modules/datasource/jenkins-plugins/index.ts
index 85048c5da3..aef686da9b 100644
--- a/lib/modules/datasource/jenkins-plugins/index.ts
+++ b/lib/modules/datasource/jenkins-plugins/index.ts
@@ -74,7 +74,9 @@ export class JenkinsPluginsDatasource extends Datasource {
         version,
         downloadUrl: plugins[name][version]?.url,
         releaseTimestamp: plugins[name][version]?.buildDate
-          ? new Date(`${plugins[name][version].buildDate} UTC`)
+          ? // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+            new Date(`${plugins[name][version].buildDate} UTC`)
           : null,
       }));
     }
diff --git a/lib/modules/datasource/maven/util.ts b/lib/modules/datasource/maven/util.ts
index 1a06e0436c..27cedda4b6 100644
--- a/lib/modules/datasource/maven/util.ts
+++ b/lib/modules/datasource/maven/util.ts
@@ -369,10 +369,14 @@ export async function createUrlForDependencyPom(
 
     // If we were able to resolve the version, use that, otherwise fall back to using -SNAPSHOT
     if (fullVersion !== null) {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       return `${version}/${dependency.name}-${fullVersion}.pom`;
     }
   }
 
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   return `${version}/${dependency.name}-${version}.pom`;
 }
 
diff --git a/lib/modules/datasource/node/index.ts b/lib/modules/datasource/node/index.ts
index 96e3a1612b..c358595390 100644
--- a/lib/modules/datasource/node/index.ts
+++ b/lib/modules/datasource/node/index.ts
@@ -23,6 +23,8 @@ export class NodeDatasource extends Datasource {
 
   @cache({
     namespace: `datasource-${datasource}`,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/npm/get.ts b/lib/modules/datasource/npm/get.ts
index bcaeac57a1..5660a02d5f 100644
--- a/lib/modules/datasource/npm/get.ts
+++ b/lib/modules/datasource/npm/get.ts
@@ -35,6 +35,8 @@ function getPackageSource(repository: any): PackageSource {
     if (is.nonEmptyString(repository.directory)) {
       res.sourceDirectory = repository.directory;
     }
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const sourceUrlCopy = `${res.sourceUrl}`;
     const sourceUrlSplit: string[] = sourceUrlCopy.split('/');
     if (sourceUrlSplit.length > 7 && sourceUrlSplit[2] === 'github.com') {
diff --git a/lib/modules/datasource/nuget/v2.ts b/lib/modules/datasource/nuget/v2.ts
index 7353f9514c..a8000f9186 100644
--- a/lib/modules/datasource/nuget/v2.ts
+++ b/lib/modules/datasource/nuget/v2.ts
@@ -33,6 +33,8 @@ export async function getReleases(
       const version = getPkgProp(pkgInfo, 'Version');
       const releaseTimestamp = getPkgProp(pkgInfo, 'Published');
       dep.releases.push({
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         version: removeBuildMeta(`${version}`),
         releaseTimestamp,
       });
diff --git a/lib/modules/datasource/nuget/v3.ts b/lib/modules/datasource/nuget/v3.ts
index b2c81d1e0a..d389392391 100644
--- a/lib/modules/datasource/nuget/v3.ts
+++ b/lib/modules/datasource/nuget/v3.ts
@@ -169,7 +169,11 @@ export async function getReleases(
     if (is.nonEmptyString(packageBaseAddress)) {
       const nuspecUrl = `${ensureTrailingSlash(
         packageBaseAddress
-      )}${pkgName.toLowerCase()}/${latestStable}/${pkgName.toLowerCase()}.nuspec`;
+      )}${pkgName.toLowerCase()}/${
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+        latestStable
+      }/${pkgName.toLowerCase()}.nuspec`;
       const metaresult = await http.get(nuspecUrl);
       const nuspec = new XmlDocument(metaresult.body);
       const sourceUrl = nuspec.valueWithPath('metadata.repository@url');
diff --git a/lib/modules/datasource/pod/index.ts b/lib/modules/datasource/pod/index.ts
index f567e237c7..33998c1c18 100644
--- a/lib/modules/datasource/pod/index.ts
+++ b/lib/modules/datasource/pod/index.ts
@@ -209,6 +209,8 @@ export class PodDatasource extends Datasource {
     ttlMinutes: 30,
     namespace: `datasource-${PodDatasource.id}`,
     key: ({ packageName, registryUrl }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `${registryUrl}:${packageName}`,
   })
   async getReleases({
diff --git a/lib/modules/datasource/puppet-forge/index.ts b/lib/modules/datasource/puppet-forge/index.ts
index beeb323001..8c2b4ad289 100644
--- a/lib/modules/datasource/puppet-forge/index.ts
+++ b/lib/modules/datasource/puppet-forge/index.ts
@@ -18,6 +18,8 @@ export class PuppetForgeDatasource extends Datasource {
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
     // https://forgeapi.puppet.com
     const moduleSlug = packageName.replace('/', '-');
+    // TODO: types (#7154)
+    /* eslint-disable-next-line @typescript-eslint/restrict-template-expressions */
     const url = `${registryUrl}/v3/modules/${moduleSlug}?exclude_fields=current_release`;
 
     let module: PuppetModule;
diff --git a/lib/modules/datasource/ruby-version/index.ts b/lib/modules/datasource/ruby-version/index.ts
index a04cc1b552..ac155f6bdb 100644
--- a/lib/modules/datasource/ruby-version/index.ts
+++ b/lib/modules/datasource/ruby-version/index.ts
@@ -28,6 +28,8 @@ export class RubyVersionDatasource extends Datasource {
       sourceUrl: 'https://github.com/ruby/ruby',
       releases: [],
     };
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const rubyVersionsUrl = `${registryUrl}en/downloads/releases/`;
     try {
       const response = await this.http.get(rubyVersionsUrl);
diff --git a/lib/modules/datasource/rubygems/index.ts b/lib/modules/datasource/rubygems/index.ts
index 4eab67ef7b..ad3190635b 100644
--- a/lib/modules/datasource/rubygems/index.ts
+++ b/lib/modules/datasource/rubygems/index.ts
@@ -32,6 +32,8 @@ export class RubyGemsDatasource extends Datasource {
   @cache({
     namespace: `datasource-${RubyGemsDatasource.id}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
+      // TODO: types (#7154)
+      /* eslint-disable @typescript-eslint/restrict-template-expressions */
       `${registryUrl}/${packageName}`,
   })
   getReleases({
diff --git a/lib/modules/datasource/terraform-module/index.ts b/lib/modules/datasource/terraform-module/index.ts
index 61817a45cf..7e412935d5 100644
--- a/lib/modules/datasource/terraform-module/index.ts
+++ b/lib/modules/datasource/terraform-module/index.ts
@@ -80,6 +80,8 @@ export class TerraformModuleDatasource extends TerraformDatasource {
     let pkgUrl: string;
 
     try {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       pkgUrl = `${registryUrl}${serviceDiscovery['modules.v1']}${repository}`;
       res = (await this.http.getJson<TerraformRelease>(pkgUrl)).body;
       const returnedName = res.namespace + '/' + res.name + '/' + res.provider;
@@ -123,6 +125,8 @@ export class TerraformModuleDatasource extends TerraformDatasource {
     let res: TerraformModuleVersions;
     let pkgUrl: string;
     try {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       pkgUrl = `${registryUrl}${serviceDiscovery['modules.v1']}${repository}/versions`;
       res = (await this.http.getJson<TerraformModuleVersions>(pkgUrl)).body;
       if (res.modules.length < 1) {
diff --git a/lib/modules/datasource/terraform-provider/index.ts b/lib/modules/datasource/terraform-provider/index.ts
index af8b2a217e..c2f1882dd7 100644
--- a/lib/modules/datasource/terraform-provider/index.ts
+++ b/lib/modules/datasource/terraform-provider/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import is from '@sindresorhus/is';
 import pMap from 'p-map';
 import { logger } from '../../../logger';
diff --git a/lib/modules/manager/bazel/update.ts b/lib/modules/manager/bazel/update.ts
index 1556e2890f..68579aeae8 100644
--- a/lib/modules/manager/bazel/update.ts
+++ b/lib/modules/manager/bazel/update.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import hasha from 'hasha';
 import { logger } from '../../../logger';
 import * as packageCache from '../../../util/cache/package';
diff --git a/lib/modules/manager/bundler/extract.ts b/lib/modules/manager/bundler/extract.ts
index 858c6a5ff8..acbfd51c2b 100644
--- a/lib/modules/manager/bundler/extract.ts
+++ b/lib/modules/manager/bundler/extract.ts
@@ -191,6 +191,8 @@ export async function extractPackageFile(
       res.lockFiles = [gemfileLock];
       const lockedEntries = extractLockFileEntries(lockContent);
       for (const dep of res.deps) {
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         const lockedDepValue = lockedEntries.get(`${dep.depName}`);
         if (lockedDepValue) {
           dep.lockedVersion = lockedDepValue;
diff --git a/lib/modules/manager/bundler/host-rules.ts b/lib/modules/manager/bundler/host-rules.ts
index 5937e54bf8..36234cf255 100644
--- a/lib/modules/manager/bundler/host-rules.ts
+++ b/lib/modules/manager/bundler/host-rules.ts
@@ -18,8 +18,12 @@ export function findAllAuthenticatable({
 
 export function getAuthenticationHeaderValue(hostRule: HostRule): string {
   if (hostRule.username) {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     return `${hostRule.username}:${hostRule.password}`;
   }
 
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   return `${hostRule.token}`;
 }
diff --git a/lib/modules/manager/bundler/update-locked.ts b/lib/modules/manager/bundler/update-locked.ts
index fc6295a89a..a9389343aa 100644
--- a/lib/modules/manager/bundler/update-locked.ts
+++ b/lib/modules/manager/bundler/update-locked.ts
@@ -10,6 +10,8 @@ export function updateLockedDependency(
   const { depName, currentVersion, newVersion, lockFile, lockFileContent } =
     config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `bundler.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   try {
diff --git a/lib/modules/manager/composer/update-locked.ts b/lib/modules/manager/composer/update-locked.ts
index 9187bfb1eb..3d3b614c7f 100644
--- a/lib/modules/manager/composer/update-locked.ts
+++ b/lib/modules/manager/composer/update-locked.ts
@@ -9,6 +9,8 @@ export function updateLockedDependency(
   const { depName, currentVersion, newVersion, lockFile, lockFileContent } =
     config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `composer.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   try {
diff --git a/lib/modules/manager/composer/utils.ts b/lib/modules/manager/composer/utils.ts
index 92c5eecf26..6474fbd0e8 100644
--- a/lib/modules/manager/composer/utils.ts
+++ b/lib/modules/manager/composer/utils.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import { quote } from 'shlex';
 import { GlobalConfig } from '../../../config/global';
 import { logger } from '../../../logger';
diff --git a/lib/modules/manager/git-submodules/artifacts.ts b/lib/modules/manager/git-submodules/artifacts.ts
index f77865f0c4..4f960c128c 100644
--- a/lib/modules/manager/git-submodules/artifacts.ts
+++ b/lib/modules/manager/git-submodules/artifacts.ts
@@ -6,6 +6,8 @@ export default function updateArtifacts({
 }: UpdateArtifact): UpdateArtifactsResult[] | null {
   const res: UpdateArtifactsResult[] = [];
   updatedDeps.forEach((dep) => {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     logger.info(`Updating submodule ${dep.depName}`);
     res.push({
       file: { type: 'addition', path: dep.depName!, contents: '' },
diff --git a/lib/modules/manager/gitlabci/utils.ts b/lib/modules/manager/gitlabci/utils.ts
index 8c6092b2ab..d8afde40ba 100644
--- a/lib/modules/manager/gitlabci/utils.ts
+++ b/lib/modules/manager/gitlabci/utils.ts
@@ -31,7 +31,8 @@ export function getGitlabDep(
   const match = depProxyRe.exec(imageName);
   if (match?.groups) {
     const dep = { ...getDep(match.groups.depName), replaceString: imageName };
-    // TODO: #7154
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     dep.autoReplaceStringTemplate = `${match.groups.prefix}${dep.autoReplaceStringTemplate}`;
     return dep;
   }
diff --git a/lib/modules/manager/gomod/artifacts.ts b/lib/modules/manager/gomod/artifacts.ts
index 4b41ccfaba..2bc7c2b537 100644
--- a/lib/modules/manager/gomod/artifacts.ts
+++ b/lib/modules/manager/gomod/artifacts.ts
@@ -66,6 +66,8 @@ function getGitEnvironmentVariables(): NodeJS.ProcessEnv {
       const httpUrl = createURLFromHostOrURL(hostRule.matchHost!)?.toString();
       if (validateUrl(httpUrl)) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `Adding Git authentication for Go Module retrieval for ${httpUrl} using token auth.`
         );
         environmentVariables = getGitAuthenticatedEnvironmentVariables(
@@ -90,6 +92,8 @@ function getUpdateImportPathCmds(
   const updateImportCommands = updatedDeps
     .map((dep) => dep.depName!)
     .filter((x) => !x.startsWith('gopkg.in'))
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     .map((depName) => `mod upgrade --mod-name=${depName} -t=${newMajor}`);
 
   if (updateImportCommands.length > 0) {
diff --git a/lib/modules/manager/gomod/update.ts b/lib/modules/manager/gomod/update.ts
index 63908e67ef..f6abe980c6 100644
--- a/lib/modules/manager/gomod/update.ts
+++ b/lib/modules/manager/gomod/update.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import { logger } from '../../../logger';
 import { newlineRegex, regEx } from '../../../util/regex';
 import type { UpdateDependencyConfig } from '../types';
diff --git a/lib/modules/manager/gradle/__testutil__/gradle.ts b/lib/modules/manager/gradle/__testutil__/gradle.ts
index 95f9d84980..d673ee31cc 100644
--- a/lib/modules/manager/gradle/__testutil__/gradle.ts
+++ b/lib/modules/manager/gradle/__testutil__/gradle.ts
@@ -20,7 +20,11 @@ function parseJavaVersion(javaVersionOutput: string | undefined): number {
   if (enforceJava) {
     throw Error(`This test suite needs Java and ${failIfNoJavaEnv} is set. However, we cannot parse the Java version.
 The output of java -version was:
-${javaVersionOutput}`);
+${
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+  javaVersionOutput
+}`);
   }
   return 0;
 }
diff --git a/lib/modules/manager/gradle/parser.ts b/lib/modules/manager/gradle/parser.ts
index c3c69dcb77..48e620a89e 100644
--- a/lib/modules/manager/gradle/parser.ts
+++ b/lib/modules/manager/gradle/parser.ts
@@ -185,6 +185,8 @@ function processDepInterpolation({
         const lastToken = token.children[token.children.length - 1];
         if (
           lastToken.type === TokenType.String &&
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           lastToken.value.startsWith(`:${dep.currentValue}`)
         ) {
           packageFile = packageFileOrig;
@@ -1193,6 +1195,8 @@ export async function parseGradle(
       // Should not happen, but it's better to be prepared
       logger.warn(
         { packageFile },
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         `${packageFile} parsing error, results can be incomplete`
       );
       break;
diff --git a/lib/modules/manager/gradle/update.ts b/lib/modules/manager/gradle/update.ts
index 3b8cf531eb..36ab93dc6b 100644
--- a/lib/modules/manager/gradle/update.ts
+++ b/lib/modules/manager/gradle/update.ts
@@ -24,6 +24,8 @@ export function updateDependency({
       return fileContent;
     }
     if (version === currentValue || upgrade.groupName) {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       return `${leftPart}${newValue}${restPart}`;
     }
     logger.debug({ depName, version, currentValue, newValue }, 'Unknown value');
diff --git a/lib/modules/manager/homebrew/extract.ts b/lib/modules/manager/homebrew/extract.ts
index 716de3178f..c2d20d9e6f 100644
--- a/lib/modules/manager/homebrew/extract.ts
+++ b/lib/modules/manager/homebrew/extract.ts
@@ -166,6 +166,8 @@ export function extractPackageFile(content: string): PackageFile | null {
     skipReason = 'invalid-sha256';
   }
   const dep: PackageDependency = {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     depName: `${ownerName}/${repoName}`,
     managerData: { ownerName, repoName, sha256, url },
     currentValue,
diff --git a/lib/modules/manager/homebrew/update.ts b/lib/modules/manager/homebrew/update.ts
index 8b8c9655ec..aa71dde557 100644
--- a/lib/modules/manager/homebrew/update.ts
+++ b/lib/modules/manager/homebrew/update.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import hasha from 'hasha';
 import semver from 'semver';
 import { logger } from '../../../logger';
diff --git a/lib/modules/manager/kustomize/extract.ts b/lib/modules/manager/kustomize/extract.ts
index 59d0346e05..25f6509bd3 100644
--- a/lib/modules/manager/kustomize/extract.ts
+++ b/lib/modules/manager/kustomize/extract.ts
@@ -87,6 +87,8 @@ export function extractImage(image: Image): PackageDependency | null {
       };
     }
 
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     const dep = splitImageParts(`${depName}:${newTag}`);
     return {
       ...dep,
diff --git a/lib/modules/manager/npm/extract/locked-versions.ts b/lib/modules/manager/npm/extract/locked-versions.ts
index b8d881027a..ac197b1a24 100644
--- a/lib/modules/manager/npm/extract/locked-versions.ts
+++ b/lib/modules/manager/npm/extract/locked-versions.ts
@@ -35,6 +35,8 @@ export async function getLockedVersions(
       for (const dep of packageFile.deps) {
         dep.lockedVersion =
           lockFileCache[yarnLock].lockedVersions[
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `${dep.depName}@${dep.currentValue}`
           ];
         if (
@@ -46,6 +48,8 @@ export async function getLockedVersions(
         }
       }
     } else if (npmLock) {
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       logger.debug(`Found ${npmLock} for ${packageFile.packageFile}`);
       lockFiles.push(npmLock);
       if (!lockFileCache[npmLock]) {
diff --git a/lib/modules/manager/npm/post-update/index.ts b/lib/modules/manager/npm/post-update/index.ts
index 1e21bacd46..ee8697e385 100644
--- a/lib/modules/manager/npm/post-update/index.ts
+++ b/lib/modules/manager/npm/post-update/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import is from '@sindresorhus/is';
 import deepmerge from 'deepmerge';
 import detectIndent from 'detect-indent';
diff --git a/lib/modules/manager/npm/post-update/lerna.ts b/lib/modules/manager/npm/post-update/lerna.ts
index 90db8a57c1..22d9a8717f 100644
--- a/lib/modules/manager/npm/post-update/lerna.ts
+++ b/lib/modules/manager/npm/post-update/lerna.ts
@@ -18,6 +18,8 @@ export function getLernaVersion(
   const lernaDep = lernaPackageFile.deps?.find((d) => d.depName === 'lerna');
   if (!lernaDep || !semver.validRange(lernaDep.currentValue)) {
     logger.warn(
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       `Could not detect lerna version in ${lernaPackageFile.packageFile}, using 'latest'`
     );
     return 'latest';
diff --git a/lib/modules/manager/npm/post-update/npm.ts b/lib/modules/manager/npm/post-update/npm.ts
index a9375269bd..b757111cde 100644
--- a/lib/modules/manager/npm/post-update/npm.ts
+++ b/lib/modules/manager/npm/post-update/npm.ts
@@ -89,6 +89,8 @@ export async function generateLockFile(
       const updateCmd =
         `npm install ${cmdOptions}` +
         lockUpdates
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           .map((update) => ` ${update.depName}@${update.newVersion}`)
           .join('');
       commands.push(updateCmd);
diff --git a/lib/modules/manager/npm/post-update/rules.ts b/lib/modules/manager/npm/post-update/rules.ts
index dad235b056..dd905086d2 100644
--- a/lib/modules/manager/npm/post-update/rules.ts
+++ b/lib/modules/manager/npm/post-update/rules.ts
@@ -23,7 +23,9 @@ export function processHostRules(): HostRulesResult {
       uri =
         is.string(uri) && validateUrl(uri)
           ? uri.replace(regEx(/^https?:/), '')
-          : `//${uri}/`;
+          : // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+            `//${uri}/`;
       if (hostRule.token) {
         const key = hostRule.authType === 'Basic' ? '_auth' : '_authToken';
         additionalNpmrcContent.push(`${uri}:${key}=${hostRule.token}`);
diff --git a/lib/modules/manager/npm/post-update/yarn.ts b/lib/modules/manager/npm/post-update/yarn.ts
index 2129f4a9ce..d1036e9109 100644
--- a/lib/modules/manager/npm/post-update/yarn.ts
+++ b/lib/modules/manager/npm/post-update/yarn.ts
@@ -195,6 +195,8 @@ export async function generateLockFile(
 
     if (yarnUpdate && !isYarn1) {
       logger.debug('Updating Yarn binary');
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       commands.push(`yarn set version ${yarnUpdate.newValue}`);
     }
 
@@ -219,6 +221,8 @@ export async function generateLockFile(
         // `yarn up` updates to the latest release, so the range should be specified
         commands.push(
           `yarn up ${lockUpdates
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             .map((update) => `${update.depName}@${update.newValue}`)
             .filter(uniqueStrings)
             .join(' ')}${cmdOptions}`
diff --git a/lib/modules/manager/npm/update/dependency/index.ts b/lib/modules/manager/npm/update/dependency/index.ts
index 57ef571f63..72437a726e 100644
--- a/lib/modules/manager/npm/update/dependency/index.ts
+++ b/lib/modules/manager/npm/update/dependency/index.ts
@@ -130,8 +130,12 @@ export function updateDependency({
     }
   }
   if (upgrade.npmPackageAlias) {
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     newValue = `npm:${upgrade.packageName}@${newValue}`;
   }
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);
   try {
     const parsedContents: NpmPackage = JSON.parse(fileContent);
@@ -140,6 +144,8 @@ export function updateDependency({
     let oldVersion: string | undefined;
     if (depType === 'packageManager') {
       oldVersion = parsedContents[depType];
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       newValue = `${depName}@${newValue}`;
     } else if (isOverrideObject(upgrade)) {
       overrideDepParents = managerData?.parents;
@@ -248,6 +254,8 @@ export function updateDependency({
             'dependenciesMeta',
             depName,
             depKey,
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `${depName}@${newValue}`
           );
         }
diff --git a/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts b/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts
index 353641cb6b..b7a6a23be3 100644
--- a/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts
+++ b/lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts
@@ -25,6 +25,8 @@ export async function updateLockedDependency(
     allowHigherOrRemoved = false,
   } = config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `npm.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   try {
@@ -50,6 +52,8 @@ export async function updateLockedDependency(
     );
     if (lockedDeps.some((dep) => dep.bundled)) {
       logger.info(
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         `Package ${depName}@${currentVersion} is bundled and cannot be updated`
       );
       return { status: 'update-failed' };
@@ -63,12 +67,16 @@ export async function updateLockedDependency(
       let status: 'update-failed' | 'already-updated';
       if (newLockedDeps.length) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `${depName}@${currentVersion} not found in ${lockFile} but ${depName}@${newVersion} was - looks like it's already updated`
         );
         status = 'already-updated';
       } else {
         if (lockfileVersion !== 1) {
           logger.debug(
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `Found lockfileVersion ${packageLockJson.lockfileVersion}`
           );
           status = 'update-failed';
@@ -104,6 +112,8 @@ export async function updateLockedDependency(
           }
         } else {
           logger.debug(
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             `${depName}@${currentVersion} not found in ${lockFile} - cannot update`
           );
           status = 'update-failed';
@@ -151,6 +161,8 @@ export async function updateLockedDependency(
         // Parent dependency is compatible with the new version we want
         logger.debug(
           `${depName} can be updated to ${newVersion} in-range with matching constraint "${constraint}" in ${
+            // TODO: types (#7154)
+            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
             parentDepName ? `${parentDepName}@${parentVersion}` : packageFile
           }`
         );
@@ -234,6 +246,8 @@ export async function updateLockedDependency(
       // istanbul ignore if: hard to test due to recursion
       if (!parentUpdateResult.files) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `Update of ${depName} to ${newVersion} impossible due to failed update of parent ${parentUpdate.depName} to ${parentUpdate.newVersion}`
         );
         return { status: 'update-failed' };
diff --git a/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts b/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts
index da325462af..86c9301a72 100644
--- a/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts
+++ b/lib/modules/manager/npm/update/locked-dependency/yarn-lock/index.ts
@@ -12,6 +12,8 @@ export function updateLockedDependency(
   const { depName, currentVersion, newVersion, lockFile, lockFileContent } =
     config;
   logger.debug(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `npm.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`
   );
   let yarnLock: YarnLock;
@@ -41,11 +43,15 @@ export function updateLockedDependency(
       );
       if (newLockedDeps.length) {
         logger.debug(
+          // TODO: types (#7154)
+          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
           `${depName}@${currentVersion} not found in ${lockFile} but ${depName}@${newVersion} was - looks like it's already updated`
         );
         return { status: 'already-updated' };
       }
       logger.debug(
+        // TODO: types (#7154)
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
         `${depName}@${currentVersion} not found in ${lockFile} - cannot update`
       );
       return { status: 'update-failed' };
diff --git a/lib/modules/platform/azure/index.ts b/lib/modules/platform/azure/index.ts
index 012119069d..feb18fac53 100644
--- a/lib/modules/platform/azure/index.ts
+++ b/lib/modules/platform/azure/index.ts
@@ -688,6 +688,7 @@ export async function mergePr({
     `Updating PR ${pullRequestId} to status ${PullRequestStatus.Completed} (${
       PullRequestStatus[PullRequestStatus.Completed]
     }) with lastMergeSourceCommit ${
+      // TODO: types (#7154)
       // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       pr.lastMergeSourceCommit?.commitId
     } using mergeStrategy ${mergeMethod} (${
diff --git a/lib/modules/platform/bitbucket-server/utils.ts b/lib/modules/platform/bitbucket-server/utils.ts
index a3c1c8ab3b..5320b7ce14 100644
--- a/lib/modules/platform/bitbucket-server/utils.ts
+++ b/lib/modules/platform/bitbucket-server/utils.ts
@@ -168,6 +168,8 @@ function generateUrlFromEndpoint(
   const url = new URL(defaultEndpoint);
   const generatedUrl = git.getUrl({
     protocol: url.protocol as GitProtocol,
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     auth: `${opts.username}:${opts.password}`,
     host: `${url.host}${url.pathname}${
       // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
diff --git a/lib/modules/platform/bitbucket/index.ts b/lib/modules/platform/bitbucket/index.ts
index 9156c93f0f..2f089c1d50 100644
--- a/lib/modules/platform/bitbucket/index.ts
+++ b/lib/modules/platform/bitbucket/index.ts
@@ -194,6 +194,8 @@ export async function initRepo({
 
   const url = git.getUrl({
     protocol: 'https',
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     auth: `${opts.username}:${opts.password}`,
     hostname: hostnameWithoutApiPrefix,
     repository,
@@ -249,6 +251,8 @@ export async function findPr({
   prTitle,
   state = PrState.All,
 }: FindPRConfig): Promise<Pr | null> {
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   logger.debug(`findPr(${branchName}, ${prTitle}, ${state})`);
   const prList = await getPrList();
   const pr = prList.find(
@@ -330,6 +334,8 @@ async function getStatus(
 ): Promise<utils.BitbucketStatus[]> {
   const sha = await getBranchCommit(branchName);
   return utils.accumulateValues<utils.BitbucketStatus>(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `/2.0/repositories/${config.repository}/commit/${sha}/statuses`,
     'get',
     { useCache }
@@ -399,6 +405,8 @@ export async function setBranchStatus({
   };
 
   await bitbucketHttp.postJson(
+    // TODO: types (#7154)
+    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
     `/2.0/repositories/${config.repository}/commit/${sha}/statuses/build`,
     { body }
   );
@@ -847,6 +855,8 @@ export async function mergePr({
   id: prNo,
   strategy: mergeStrategy,
 }: MergePRConfig): Promise<boolean> {
+  // TODO: types (#7154)
+  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
   logger.debug(`mergePr(${prNo}, ${branchName}, ${mergeStrategy})`);
 
   // Bitbucket Cloud does not support a rebase-alike; https://jira.atlassian.com/browse/BCLOUD-16610
diff --git a/lib/modules/platform/gitea/index.spec.ts b/lib/modules/platform/gitea/index.spec.ts
index 540db41ee5..299b39a0db 100644
--- a/lib/modules/platform/gitea/index.spec.ts
+++ b/lib/modules/platform/gitea/index.spec.ts
@@ -453,6 +453,8 @@ describe('modules/platform/gitea/index', () => {
       };
       await gitea.initRepo(repoCfg);
 
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       const url = new URL(`${mockRepo.clone_url}`);
       url.username = token;
       expect(gitvcs.initRepo).toHaveBeenCalledWith(
@@ -478,6 +480,8 @@ describe('modules/platform/gitea/index', () => {
       };
       await gitea.initRepo(repoCfg);
 
+      // TODO: types (#7154)
+      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       const url = new URL(`${mockRepo.clone_url}`);
       url.username = token;
       expect(gitvcs.initRepo).toHaveBeenCalledWith(
diff --git a/lib/modules/platform/github/index.ts b/lib/modules/platform/github/index.ts
index 8477040ff0..5ab17a290e 100644
--- a/lib/modules/platform/github/index.ts
+++ b/lib/modules/platform/github/index.ts
@@ -1,3 +1,5 @@
+// TODO: types (#7154)
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
 import URL from 'url';
 import is from '@sindresorhus/is';
 import delay from 'delay';
-- 
GitLab