{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { format as formatUrl, parse as parseUrl } from 'url';\nimport { removeSubpath, subpathFromLng, subpathIsPresent, subpathIsRequired } from './index';\n\nvar parseAs = function parseAs(originalAs, href) {\n  var asType = typeof originalAs;\n  var as;\n\n  if (asType === 'undefined') {\n    as = formatUrl(href, {\n      unicode: true\n    });\n  } else if (asType === 'string') {\n    as = originalAs;\n  } else {\n    throw new Error(\"'as' type must be 'string', but it is \".concat(asType));\n  }\n\n  return as;\n};\n\nvar parseHref = function parseHref(originalHref) {\n  var hrefType = typeof originalHref;\n  var href;\n\n  if (hrefType === 'string') {\n    href = parseUrl(originalHref, true\n    /* parseQueryString */\n    );\n  } else if (hrefType === 'object') {\n    href = _objectSpread({}, originalHref);\n    href.query = originalHref.query ? _objectSpread({}, originalHref.query) : {};\n  } else {\n    throw new Error(\"'href' type must be either 'string' or 'object', but it is \".concat(hrefType));\n  }\n\n  return href;\n};\n\nexport var lngPathCorrector = function lngPathCorrector(config, currentRoute, currentLanguage) {\n  var allLanguages = config.allLanguages,\n      localeSubpaths = config.localeSubpaths;\n  var originalAs = currentRoute.as,\n      originalHref = currentRoute.href;\n\n  if (!allLanguages.includes(currentLanguage)) {\n    throw new Error('Invalid configuration: Current language is not included in all languages array');\n  }\n\n  var href = parseHref(originalHref);\n  var as = parseAs(originalAs, href);\n  /*\n  url.format prefers the 'url.search' string over\n  the 'url.query' object, so remove the search\n  string to ensure the query object is used.\n  */\n\n  delete href.search;\n  /*\n  Strip any/all subpaths from the `as` value\n  */\n\n  Object.values(localeSubpaths || {}).forEach(function (subpath) {\n    if (subpathIsPresent(as, subpath)) {\n      as = removeSubpath(as, subpath);\n    }\n  });\n\n  if (subpathIsRequired(config, currentLanguage)) {\n    var _as;\n\n    var basePath = \"\".concat(href.protocol, \"//\").concat(href.host);\n    var currentAs = (_as = as) === null || _as === void 0 ? void 0 : _as.replace(basePath, '');\n    var subpath = subpathFromLng(config, currentLanguage);\n    as = \"/\".concat(subpath).concat(currentAs).replace(/\\/$/, '');\n    href.query.lng = currentLanguage;\n    href.query.subpath = subpath;\n  }\n\n  return {\n    as: as,\n    href: href\n  };\n};","map":null,"metadata":{},"sourceType":"module"}