From a0d8d2be849cac7a4c424d650c01b7b8fa446f4b Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Wed, 3 Jul 2024 13:10:44 -0300
Subject: [PATCH] refactor: Simplify lambda function in lookup result filtering
 (#30018)

---
 .../repository/process/lookup/filter.ts       | 39 ++++++++++---------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/lib/workers/repository/process/lookup/filter.ts b/lib/workers/repository/process/lookup/filter.ts
index a4c15b2f99..0f81f89b72 100644
--- a/lib/workers/repository/process/lookup/filter.ts
+++ b/lib/workers/repository/process/lookup/filter.ts
@@ -9,6 +9,18 @@ import * as poetryVersioning from '../../../../modules/versioning/poetry';
 import { getRegexPredicate } from '../../../../util/string-match';
 import type { FilterConfig } from './types';
 
+function isReleaseStable(release: Release, versioning: VersioningApi): boolean {
+  if (!versioning.isStable(release.version)) {
+    return false;
+  }
+
+  if (release.isStable === false) {
+    return false;
+  }
+
+  return true;
+}
+
 export function filterVersions(
   config: FilterConfig,
   currentVersion: string,
@@ -18,17 +30,7 @@ export function filterVersions(
 ): Release[] {
   const { ignoreUnstable, ignoreDeprecated, respectLatest, allowedVersions } =
     config;
-  function isVersionStable(version: string): boolean {
-    if (!versioning.isStable(version)) {
-      return false;
-    }
-    // Check if the datasource returned isStable = false
-    const release = releases.find((r) => r.version === version);
-    if (release?.isStable === false) {
-      return false;
-    }
-    return true;
-  }
+
   // istanbul ignore if: shouldn't happen
   if (!currentVersion) {
     return [];
@@ -125,18 +127,19 @@ export function filterVersions(
     return filteredVersions;
   }
 
-  if (isVersionStable(currentVersion)) {
-    return filteredVersions.filter((v) => isVersionStable(v.version));
+  const currentRelease = releases.find((r) => r.version === currentVersion);
+  if (currentRelease && isReleaseStable(currentRelease, versioning)) {
+    return filteredVersions.filter((r) => isReleaseStable(r, versioning));
   }
 
   // if current is unstable then allow unstable in the current major only
   // Allow unstable only in current major
-  return filteredVersions.filter((v) => {
-    if (isVersionStable(v.version)) {
+  return filteredVersions.filter((r) => {
+    if (isReleaseStable(r, versioning)) {
       return true;
     }
     if (
-      versioning.getMajor(v.version) !== versioning.getMajor(currentVersion)
+      versioning.getMajor(r.version) !== versioning.getMajor(currentVersion)
     ) {
       return false;
     }
@@ -145,8 +148,8 @@ export function filterVersions(
       return true;
     }
     return (
-      versioning.getMinor(v.version) === versioning.getMinor(currentVersion) &&
-      versioning.getPatch(v.version) === versioning.getPatch(currentVersion)
+      versioning.getMinor(r.version) === versioning.getMinor(currentVersion) &&
+      versioning.getPatch(r.version) === versioning.getPatch(currentVersion)
     );
   });
 }
-- 
GitLab