{"version":3,"file":"urls.mjs","sources":["../../src/configuration/urls.ts"],"sourcesContent":["import _ from 'lodash';\nimport { strings } from '@strapi/utils';\nimport { isIP } from 'node:net';\n\ninterface ServerConfig {\n  url: string;\n  host: string;\n  port: number | string;\n}\n\nexport const getConfigUrls = (config: Record<string, unknown>, forAdminBuild = false) => {\n  const serverConfig = config.server as ServerConfig;\n  const adminConfig = config.admin;\n\n  // Defines serverUrl value\n  let serverUrl = _.get(serverConfig, 'url', '');\n  serverUrl = _.trim(serverUrl, '/ ');\n  if (typeof serverUrl !== 'string') {\n    throw new Error('Invalid server url config. Make sure the url is a string.');\n  }\n\n  if (serverUrl.startsWith('http')) {\n    try {\n      serverUrl = _.trim(new URL(serverConfig.url).toString(), '/');\n    } catch (e) {\n      throw new Error(\n        'Invalid server url config. Make sure the url defined in server.js is valid.'\n      );\n    }\n  } else if (serverUrl !== '') {\n    serverUrl = `/${serverUrl}`;\n  }\n\n  // Defines adminUrl value\n  let adminUrl = _.get(adminConfig, 'url', '/admin');\n  adminUrl = _.trim(adminUrl, '/ ');\n  if (typeof adminUrl !== 'string') {\n    throw new Error('Invalid admin url config. Make sure the url is a non-empty string.');\n  }\n  if (adminUrl.startsWith('http')) {\n    try {\n      adminUrl = _.trim(new URL(adminUrl).toString(), '/');\n    } catch (e) {\n      throw new Error('Invalid admin url config. Make sure the url defined in server.js is valid.');\n    }\n  } else {\n    adminUrl = `${serverUrl}/${adminUrl}`;\n  }\n\n  // Defines adminPath value\n  let adminPath = adminUrl;\n  if (\n    serverUrl.startsWith('http') &&\n    adminUrl.startsWith('http') &&\n    new URL(adminUrl).origin === new URL(serverUrl).origin &&\n    !forAdminBuild\n  ) {\n    adminPath = adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '');\n    adminPath = `/${_.trim(adminPath, '/')}`;\n  } else if (adminUrl.startsWith('http')) {\n    adminPath = new URL(adminUrl).pathname;\n  }\n\n  return {\n    serverUrl,\n    adminUrl,\n    adminPath,\n  };\n};\n\nconst getAbsoluteUrl =\n  (adminOrServer: 'admin' | 'server') =>\n  (config: Record<string, unknown>, forAdminBuild = false) => {\n    const { serverUrl, adminUrl } = getConfigUrls(config, forAdminBuild);\n    const url = adminOrServer === 'server' ? serverUrl : adminUrl;\n\n    if (url.startsWith('http')) {\n      return url;\n    }\n\n    const serverConfig = config.server as ServerConfig;\n\n    const isLocalhost =\n      config.environment === 'development' &&\n      ['127.0.0.1', '0.0.0.0', '::1', '::'].includes(serverConfig.host);\n\n    if (isLocalhost) {\n      return `http://localhost:${serverConfig.port}${url}`;\n    }\n\n    if (isIP(serverConfig.host) === 6) {\n      return `http://[${serverConfig.host}]:${serverConfig.port}${url}`;\n    }\n\n    return `http://${serverConfig.host}:${serverConfig.port}${url}`;\n  };\n\nexport const getAbsoluteAdminUrl = getAbsoluteUrl('admin');\nexport const getAbsoluteServerUrl = getAbsoluteUrl('server');\n"],"names":["getConfigUrls","config","forAdminBuild","serverConfig","server","adminConfig","admin","serverUrl","_","get","trim","Error","startsWith","URL","url","toString","e","adminUrl","adminPath","origin","replace","strings","getCommonPath","pathname","getAbsoluteUrl","adminOrServer","isLocalhost","environment","includes","host","port","isIP","getAbsoluteAdminUrl","getAbsoluteServerUrl"],"mappings":"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"}