export function completePath(url: string, newPath?: string) { try { // Use dummy base URL to avoid parameter errors const urlObj = new URL(url); let pathname = urlObj.pathname; // Remove the trailing slash if present if (pathname.endsWith("/")) { pathname = pathname.slice(0, -1); } // Extract the end path const paths = pathname.split("/"); const endPath = paths.pop() || ""; // Determine whether a version number exists const versionMatch = endPath.match(/^v\d+/); if (versionMatch) { urlObj.pathname = pathname; return urlObj.toString(); } // Check if it ends with the target path if (newPath && !pathname.endsWith(newPath)) { pathname += newPath; } if (pathname === "") { return urlObj.origin; } // Update pathname urlObj.pathname = pathname; return urlObj.toString(); } catch (err) { console.error("Invalid URL:", err); return url; } }