From 16d5c6ddf0c6be093e4b3d83c5edcfba2244b1be Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Thu, 28 Nov 2024 13:29:27 -0300
Subject: [PATCH] refactor: Make `parseUrl` utility idempotent (#32792)

---
 lib/util/url.spec.ts | 1 +
 lib/util/url.ts      | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/util/url.spec.ts b/lib/util/url.spec.ts
index 0ed4143cb6..e1ed216102 100644
--- a/lib/util/url.spec.ts
+++ b/lib/util/url.spec.ts
@@ -116,6 +116,7 @@ describe('util/url', () => {
     expect(url?.protocol).toBe('https:');
     expect(url?.host).toBe('github.com');
     expect(url?.pathname).toBe('/renovatebot/renovate');
+    expect(parseUrl(url)).toBe(url);
   });
 
   it('trimTrailingSlash', () => {
diff --git a/lib/util/url.ts b/lib/util/url.ts
index 49d92dc0de..d9886939dc 100644
--- a/lib/util/url.ts
+++ b/lib/util/url.ts
@@ -97,11 +97,15 @@ export function isHttpUrl(url: unknown): boolean {
   }
 }
 
-export function parseUrl(url: string | undefined | null): URL | null {
+export function parseUrl(url: URL | string | undefined | null): URL | null {
   if (!url) {
     return null;
   }
 
+  if (url instanceof URL) {
+    return url;
+  }
+
   try {
     return new URL(url);
   } catch {
-- 
GitLab