{"ast":null,"code":"\"use strict\";\n\nexports.__esModule = true;\nexports.parseRelativeUrl = parseRelativeUrl;\n\nvar _utils = require(\"../../utils\");\n\nvar _querystring = require(\"./querystring\");\n/**\n* Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative\n* (e.g. `./hello`) then at least base must be.\n* Absolute urls are rejected with one exception, in the browser, absolute urls that are on\n* the current origin will be parsed as relative\n*/\n\n\nfunction parseRelativeUrl(url, base) {\n  const globalBase = new URL(true ? 'http://n' : (0, _utils.getLocationOrigin)());\n  const resolvedBase = base ? new URL(base, globalBase) : globalBase;\n  const {\n    pathname,\n    searchParams,\n    search,\n    hash,\n    href,\n    origin\n  } = new URL(url, resolvedBase);\n\n  if (origin !== globalBase.origin) {\n    throw new Error(`invariant: invalid relative URL, router received ${url}`);\n  }\n\n  return {\n    pathname,\n    query: (0, _querystring.searchParamsToUrlQuery)(searchParams),\n    search,\n    hash,\n    href: href.slice(globalBase.origin.length)\n  };\n}","map":{"version":3,"sources":["../../../../../next-server/lib/router/utils/parse-relative-url.ts"],"names":["globalBase","resolvedBase","base","origin","url","query","href"],"mappings":";;;;;AAAA,IAAA,MAAA,GAAA,OAAA,CAAA,aAAA,CAAA;;AACA,IAAA,YAAA,GAAA,OAAA,CAAA,eAAA,CAAA;AAEA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAAA,gBAAA,CAAA,GAAA,EAAA,IAAA,EAAsD;AAC3D,QAAMA,UAAU,GAAG,IAAA,GAAA,CACjB,OAAA,UAAA,GAA6C,CAAA,GAAA,MAAA,CAD/C,iBAC+C,GAD5B,CAAnB;AAGA,QAAMC,YAAY,GAAGC,IAAI,GAAG,IAAA,GAAA,CAAA,IAAA,EAAH,UAAG,CAAH,GAAzB,UAAA;AACA,QAAM;AAAA,IAAA,QAAA;AAAA,IAAA,YAAA;AAAA,IAAA,MAAA;AAAA,IAAA,IAAA;AAAA,IAAA,IAAA;AAAA,IAAA;AAAA,MAAyD,IAAA,GAAA,CAAA,GAAA,EAA/D,YAA+D,CAA/D;;AAIA,MAAIC,MAAM,KAAKH,UAAU,CAAzB,MAAA,EAAkC;AAChC,UAAM,IAAA,KAAA,CAAW,oDAAmDI,GAApE,EAAM,CAAN;AAEF;;AAAA,SAAO;AAAA,IAAA,QAAA;AAELC,IAAAA,KAAK,EAAE,CAAA,GAAA,YAAA,CAAA,sBAAA,EAFF,YAEE,CAFF;AAAA,IAAA,MAAA;AAAA,IAAA,IAAA;AAKLC,IAAAA,IAAI,EAAEA,IAAI,CAAJA,KAAAA,CAAWN,UAAU,CAAVA,MAAAA,CALnB,MAKQM;AALD,GAAP;AAOD","sourcesContent":["import { getLocationOrigin } from '../../utils'\nimport { searchParamsToUrlQuery } from './querystring'\n\n/**\n * Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative\n * (e.g. `./hello`) then at least base must be.\n * Absolute urls are rejected with one exception, in the browser, absolute urls that are on\n * the current origin will be parsed as relative\n */\nexport function parseRelativeUrl(url: string, base?: string) {\n  const globalBase = new URL(\n    typeof window === 'undefined' ? 'http://n' : getLocationOrigin()\n  )\n  const resolvedBase = base ? new URL(base, globalBase) : globalBase\n  const { pathname, searchParams, search, hash, href, origin } = new URL(\n    url,\n    resolvedBase\n  )\n  if (origin !== globalBase.origin) {\n    throw new Error(`invariant: invalid relative URL, router received ${url}`)\n  }\n  return {\n    pathname,\n    query: searchParamsToUrlQuery(searchParams),\n    search,\n    hash,\n    href: href.slice(globalBase.origin.length),\n  }\n}\n"]},"metadata":{},"sourceType":"script"}