{"version":3,"sources":["../../../src/localization/getPathWithoutLocale.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport { type Locales, type LocalesValues } from '@intlayer/config/client';\n\nimport { checkIsURLAbsolute } from '../utils/checkIsURLAbsolute';\n\n/**\n * Removes the locale segment from the given URL or pathname if present.\n *\n * This function get the locales from the configuration if not provided.\n *\n * Example:\n *\n * ```ts\n * getPathWithoutLocale('/en/dashboard') // Returns '/dashboard'\n * getPathWithoutLocale('/fr/dashboard') // Returns '/dashboard'\n * getPathWithoutLocale('/dashboard') // Returns '/dashboard'\n * getPathWithoutLocale('dashboard') // Returns 'dashboard'\n * getPathWithoutLocale('https://example.com/en/dashboard') // Returns 'https://example.com/dashboard'\n * getPathWithoutLocale('https://example.com/fr/dashboard') // Returns 'https://example.com/dashboard'\n * getPathWithoutLocale('https://example.com/dashboard') // Returns 'https://example.com/dashboard'\n * ```\n *\n * @param inputUrl - The complete URL string or pathname to process.\n * @param locales - Optional array of supported locales. Defaults to `localesDefault`.\n * @returns The URL string or pathname without the locale segment.\n */\nexport const getPathWithoutLocale = (\n  inputUrl: string,\n  locales: LocalesValues[] = configuration.internationalization\n    .locales as LocalesValues[]\n): string => {\n  // Determine if the original URL is absolute (includes protocol)\n  const isAbsoluteUrl = checkIsURLAbsolute(inputUrl);\n\n  let fixedInputUrl = inputUrl;\n\n  if (inputUrl.endsWith('/')) {\n    fixedInputUrl = inputUrl.slice(0, -1);\n  }\n\n  // Initialize a URL object if the URL is absolute\n  // For relative URLs, use a dummy base to leverage the URL API\n  const url = isAbsoluteUrl\n    ? new URL(fixedInputUrl)\n    : new URL(fixedInputUrl, 'http://example.com');\n\n  const pathname = url.pathname;\n\n  // Ensure the pathname starts with '/'\n  if (!pathname.startsWith('/')) {\n    // If not, return the URL as is\n    url.pathname = `/${pathname}`;\n  }\n\n  // Split the pathname to extract the first segment\n  const pathSegments = pathname.split('/');\n  const firstSegment = pathSegments[1]; // The segment after the first '/'\n\n  // Check if the first segment is a supported locale\n  if (locales.includes(firstSegment as Locales)) {\n    // Remove the locale segment from the pathname\n    pathSegments.splice(1, 1); // Remove the first segment\n\n    // Reconstruct the pathname\n    const newPathname = pathSegments.join('/') ?? '/';\n    url.pathname = newPathname;\n  }\n\n  if (isAbsoluteUrl) {\n    // Return the modified URL as a string\n    return url.toString();\n  }\n\n  // Return the modified URL as a string\n  return url.toString().replace('http://example.com', '');\n};\n"],"mappings":"AAAA,OAAO,mBAAmB;AAG1B,SAAS,0BAA0B;AAuB5B,MAAM,uBAAuB,CAClC,UACA,UAA2B,cAAc,qBACtC,YACQ;AAEX,QAAM,gBAAgB,mBAAmB,QAAQ;AAEjD,MAAI,gBAAgB;AAEpB,MAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,oBAAgB,SAAS,MAAM,GAAG,EAAE;AAAA,EACtC;AAIA,QAAM,MAAM,gBACR,IAAI,IAAI,aAAa,IACrB,IAAI,IAAI,eAAe,oBAAoB;AAE/C,QAAM,WAAW,IAAI;AAGrB,MAAI,CAAC,SAAS,WAAW,GAAG,GAAG;AAE7B,QAAI,WAAW,IAAI,QAAQ;AAAA,EAC7B;AAGA,QAAM,eAAe,SAAS,MAAM,GAAG;AACvC,QAAM,eAAe,aAAa,CAAC;AAGnC,MAAI,QAAQ,SAAS,YAAuB,GAAG;AAE7C,iBAAa,OAAO,GAAG,CAAC;AAGxB,UAAM,cAAc,aAAa,KAAK,GAAG,KAAK;AAC9C,QAAI,WAAW;AAAA,EACjB;AAEA,MAAI,eAAe;AAEjB,WAAO,IAAI,SAAS;AAAA,EACtB;AAGA,SAAO,IAAI,SAAS,EAAE,QAAQ,sBAAsB,EAAE;AACxD;","names":[]}