File size: 789 Bytes
f0743f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const { logger } = require('@librechat/data-schemas');

/**
 * Extracts the base URL from the provided URL.
 * @param {string} fullURL - The full URL.
 * @returns {string} The base URL.
 */
function deriveBaseURL(fullURL) {
  try {
    const parsedUrl = new URL(fullURL);
    const protocol = parsedUrl.protocol;
    const hostname = parsedUrl.hostname;
    const port = parsedUrl.port;

    // Check if the parsed URL components are meaningful
    if (!protocol || !hostname) {
      return fullURL;
    }

    // Reconstruct the base URL
    return `${protocol}//${hostname}${port ? `:${port}` : ''}`;
  } catch (error) {
    logger.error('Failed to derive base URL', error);
    return fullURL; // Return the original URL in case of any exception
  }
}

module.exports = deriveBaseURL;