From c3ad246a998709852b1c8fdd91e5eadd2c70aea3 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 9 Nov 2021 07:04:34 +0100
Subject: [PATCH] fix: no-param-reassign (#12571)

---
 .eslintrc.js                                   | 1 +
 lib/config/presets/index.ts                    | 4 +++-
 lib/config/presets/util.ts                     | 4 ++--
 lib/logger/utils.ts                            | 3 ++-
 lib/manager/ansible-galaxy/collections.ts      | 2 --
 lib/manager/terraform/modules.ts               | 1 -
 lib/manager/terraform/providers.ts             | 1 -
 lib/manager/terraform/required-providers.ts    | 2 --
 lib/manager/terraform/required-version.ts      | 1 -
 lib/manager/terraform/resources.ts             | 1 -
 lib/manager/terraform/util.ts                  | 1 -
 lib/manager/terragrunt/modules.ts              | 1 -
 lib/util/http/index.ts                         | 5 +++--
 lib/util/index.ts                              | 6 +++---
 lib/versioning/regex/index.ts                  | 6 ++----
 lib/workers/pr/body/index.ts                   | 1 -
 lib/workers/repository/dependency-dashboard.ts | 2 --
 17 files changed, 16 insertions(+), 26 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js
index 6c9228c3eb..e57f1d1c0a 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -36,6 +36,7 @@ module.exports = {
 
     // other rules
     'import/prefer-default-export': 0, // no benefit
+    'no-param-reassign': 'error',
     'no-restricted-syntax': 0,
     'no-await-in-loop': 0,
     'prefer-destructuring': 0,
diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts
index 8ad679445e..29e5786815 100644
--- a/lib/config/presets/index.ts
+++ b/lib/config/presets/index.ts
@@ -5,6 +5,7 @@ import {
 } from '../../constants/error-messages';
 import { logger } from '../../logger';
 import { ExternalHostError } from '../../types/errors/external-host-error';
+import { clone } from '../../util/clone';
 import { regEx } from '../../util/regex';
 import * as massage from '../massage';
 import * as migration from '../migration';
@@ -251,9 +252,10 @@ export async function getPreset(
 export async function resolveConfigPresets(
   inputConfig: AllConfig,
   baseConfig?: RenovateConfig,
-  ignorePresets?: string[],
+  _ignorePresets?: string[],
   existingPresets: string[] = []
 ): Promise<AllConfig> {
+  let ignorePresets = clone(_ignorePresets);
   if (!ignorePresets || ignorePresets.length === 0) {
     ignorePresets = inputConfig.ignorePresets || [];
   }
diff --git a/lib/config/presets/util.ts b/lib/config/presets/util.ts
index 4f701cb4ed..f0a0144096 100644
--- a/lib/config/presets/util.ts
+++ b/lib/config/presets/util.ts
@@ -14,11 +14,11 @@ export async function fetchPreset({
   pkgName,
   filePreset,
   presetPath,
-  endpoint,
+  endpoint: _endpoint,
   packageTag = null,
   fetch,
 }: FetchPresetConfig): Promise<Preset | undefined> {
-  endpoint = ensureTrailingSlash(endpoint);
+  const endpoint = ensureTrailingSlash(_endpoint);
   const [fileName, presetName, subPresetName] = filePreset.split('/');
   const pathPrefix = presetPath ? `${presetPath}/` : '';
   const buildFilePath = (name: string): string => `${pathPrefix}${name}`;
diff --git a/lib/logger/utils.ts b/lib/logger/utils.ts
index ed605e9193..03604ac2a0 100644
--- a/lib/logger/utils.ts
+++ b/lib/logger/utils.ts
@@ -89,7 +89,8 @@ export default function prepareError(err: Error): Record<string, unknown> {
   return response;
 }
 
-export function sanitizeValue(value: unknown, seen = new WeakMap()): any {
+export function sanitizeValue(_value: unknown, seen = new WeakMap()): any {
+  let value = _value;
   if (Array.isArray(value)) {
     const length = value.length;
     const arrayResult = Array(length);
diff --git a/lib/manager/ansible-galaxy/collections.ts b/lib/manager/ansible-galaxy/collections.ts
index ed6877f4c4..8bf6f2bdeb 100644
--- a/lib/manager/ansible-galaxy/collections.ts
+++ b/lib/manager/ansible-galaxy/collections.ts
@@ -75,7 +75,6 @@ function handleGitDep(
       dep.currentValue = dep.managerData.version;
     }
   }
-  /* eslint-enable no-param-reassign */
 }
 
 function handleGalaxyDep(dep: PackageDependency): void {
@@ -83,7 +82,6 @@ function handleGalaxyDep(dep: PackageDependency): void {
   dep.depName = dep.managerData.name;
   dep.registryUrls = dep.managerData.source ? [dep.managerData.source] : [];
   dep.currentValue = dep.managerData.version;
-  /* eslint-enable no-param-reassign */
 }
 
 function finalize(dependency: PackageDependency): boolean {
diff --git a/lib/manager/terraform/modules.ts b/lib/manager/terraform/modules.ts
index c734b38122..810c614c0e 100644
--- a/lib/manager/terraform/modules.ts
+++ b/lib/manager/terraform/modules.ts
@@ -69,5 +69,4 @@ export function analyseTerraformModule(dep: PackageDependency): void {
     logger.debug({ dep }, 'terraform dep has no source');
     dep.skipReason = SkipReason.NoSource;
   }
-  /* eslint-enable no-param-reassign */
 }
diff --git a/lib/manager/terraform/providers.ts b/lib/manager/terraform/providers.ts
index 42bdd84236..229395dc1d 100644
--- a/lib/manager/terraform/providers.ts
+++ b/lib/manager/terraform/providers.ts
@@ -99,5 +99,4 @@ export function analyzeTerraformProvider(
   massageProviderLookupName(dep);
 
   dep.lockedVersion = getLockedVersion(dep, locks);
-  /* eslint-enable no-param-reassign */
 }
diff --git a/lib/manager/terraform/required-providers.ts b/lib/manager/terraform/required-providers.ts
index 555d2650e9..b59956d46b 100644
--- a/lib/manager/terraform/required-providers.ts
+++ b/lib/manager/terraform/required-providers.ts
@@ -33,7 +33,6 @@ function extractBlock(
         default:
           break;
       }
-      /* eslint-enable no-param-reassign */
     }
   } while (line.trim() !== '}');
   return lineNumber;
@@ -79,5 +78,4 @@ export function analyzeTerraformRequiredProvider(
 ): void {
   analyzeTerraformProvider(dep, locks);
   dep.depType = `required_provider`;
-  /* eslint-enable no-param-reassign */
 }
diff --git a/lib/manager/terraform/required-version.ts b/lib/manager/terraform/required-version.ts
index 23d3bc88f4..1de63c941f 100644
--- a/lib/manager/terraform/required-version.ts
+++ b/lib/manager/terraform/required-version.ts
@@ -49,5 +49,4 @@ export function analyseTerraformVersion(dep: PackageDependency): void {
   dep.datasource = datasourceGithubTags.id;
   dep.depName = 'hashicorp/terraform';
   dep.extractVersion = 'v(?<version>.*)$';
-  /* eslint-enable no-param-reassign */
 }
diff --git a/lib/manager/terraform/resources.ts b/lib/manager/terraform/resources.ts
index 396fb4459d..7b441b5911 100644
--- a/lib/manager/terraform/resources.ts
+++ b/lib/manager/terraform/resources.ts
@@ -109,5 +109,4 @@ export function analyseTerraformResource(
       dep.skipReason = SkipReason.InvalidValue;
       break;
   }
-  /* eslint-enable no-param-reassign */
 }
diff --git a/lib/manager/terraform/util.ts b/lib/manager/terraform/util.ts
index e804c5d7cb..e0f2f08ad1 100644
--- a/lib/manager/terraform/util.ts
+++ b/lib/manager/terraform/util.ts
@@ -59,7 +59,6 @@ export function massageProviderLookupName(dep: PackageDependency): void {
 
   // handle cases like `Telmate/proxmox`
   dep.lookupName = dep.lookupName.toLowerCase();
-  /* eslint-enable no-param-reassign */
 }
 
 export function getLockedVersion(
diff --git a/lib/manager/terragrunt/modules.ts b/lib/manager/terragrunt/modules.ts
index 3657acdb7a..f7a8f3367e 100644
--- a/lib/manager/terragrunt/modules.ts
+++ b/lib/manager/terragrunt/modules.ts
@@ -70,5 +70,4 @@ export function analyseTerragruntModule(dep: PackageDependency): void {
     logger.debug({ dep }, 'terragrunt dep has no source');
     dep.skipReason = SkipReason.NoSource;
   }
-  /* eslint-enable no-param-reassign */
 }
diff --git a/lib/util/http/index.ts b/lib/util/http/index.ts
index 6baddc7fd3..74f8581677 100644
--- a/lib/util/http/index.ts
+++ b/lib/util/http/index.ts
@@ -293,12 +293,13 @@ export class Http<GetOptions = HttpOptions, PostOptions = HttpPostOptions> {
       ...options,
     };
 
+    let resolvedUrl = url;
     // istanbul ignore else: needs test
     if (options?.baseUrl) {
-      url = resolveBaseUrl(options.baseUrl, url);
+      resolvedUrl = resolveBaseUrl(options.baseUrl, url);
     }
 
     applyDefaultHeaders(combinedOptions);
-    return got.stream(url, combinedOptions);
+    return got.stream(resolvedUrl, combinedOptions);
   }
 }
diff --git a/lib/util/index.ts b/lib/util/index.ts
index 4dd875664b..a8a142dbeb 100644
--- a/lib/util/index.ts
+++ b/lib/util/index.ts
@@ -4,14 +4,14 @@ export function sampleSize(array: string[], n: number): string[] {
     return [];
   }
 
-  n = n > length ? length : n;
+  const sampleNumber = n > length ? length : n;
   let index = 0;
   const lastIndex = length - 1;
   const result = [...array];
-  while (index < n) {
+  while (index < sampleNumber) {
     const rand = index + Math.floor(Math.random() * (lastIndex - index + 1));
     [result[rand], result[index]] = [result[index], result[rand]];
     index += 1;
   }
-  return result.slice(0, n);
+  return result.slice(0, sampleNumber);
 }
diff --git a/lib/versioning/regex/index.ts b/lib/versioning/regex/index.ts
index 7c3efde705..b5db325809 100644
--- a/lib/versioning/regex/index.ts
+++ b/lib/versioning/regex/index.ts
@@ -41,11 +41,9 @@ export class RegExpVersioningApi extends GenericVersioningApi<RegExpVersion> {
   //   RegExp('^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(:?-(?<compatibility>.*-r)(?<build>\\d+))?$');
   private _config: RegExp = null;
 
-  constructor(new_config: string) {
+  constructor(_new_config: string) {
     super();
-    if (!new_config) {
-      new_config = '^(?<major>\\d+)?$';
-    }
+    const new_config = _new_config || '^(?<major>\\d+)?$';
 
     // without at least one of {major, minor, patch} specified in the regex,
     // this versioner will not work properly
diff --git a/lib/workers/pr/body/index.ts b/lib/workers/pr/body/index.ts
index 02944d193c..0a3f509fc9 100644
--- a/lib/workers/pr/body/index.ts
+++ b/lib/workers/pr/body/index.ts
@@ -53,7 +53,6 @@ function massageUpdateMetadata(config: BranchConfig): void {
       references.push(`[changelog](${changelogUrl})`);
     }
     upgrade.references = references.join(', ');
-    /* eslint-enable no-param-reassign */
   });
 }
 
diff --git a/lib/workers/repository/dependency-dashboard.ts b/lib/workers/repository/dependency-dashboard.ts
index b85596b78d..6d1e9404e5 100644
--- a/lib/workers/repository/dependency-dashboard.ts
+++ b/lib/workers/repository/dependency-dashboard.ts
@@ -29,7 +29,6 @@ function parseDashboardIssue(issueBody: string): DependencyDashboard {
   let dependencyDashboardRebaseAllOpen = false;
   if (checkedRebaseAll) {
     dependencyDashboardRebaseAllOpen = true;
-    /* eslint-enable no-param-reassign */
   }
   return { dependencyDashboardChecks, dependencyDashboardRebaseAllOpen };
 }
@@ -50,7 +49,6 @@ export async function readDashboardBody(config: RenovateConfig): Promise<void> {
       Object.assign(config, parseDashboardIssue(issue.body));
     }
   }
-  /* eslint-enable no-param-reassign */
 }
 
 function getListItem(branch: BranchConfig, type: string): string {
-- 
GitLab