Skip to content

Commit

Permalink
make parseRelativeUrl return a UrlObject (vercel#16809)
Browse files Browse the repository at this point in the history
Alternative to vercel#16798
  • Loading branch information
Janpot authored and Piotr Bosak committed Sep 26, 2020
1 parent 2849f43 commit 64fb738
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 14 deletions.
6 changes: 1 addition & 5 deletions packages/next/client/page-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {
import getAssetPathFromRoute from '../next-server/lib/router/utils/get-asset-path-from-route'
import { isDynamicRoute } from '../next-server/lib/router/utils/is-dynamic'
import { parseRelativeUrl } from '../next-server/lib/router/utils/parse-relative-url'
import { searchParamsToUrlQuery } from '../next-server/lib/router/utils/querystring'

export const looseToArray = <T extends {}>(input: any): T[] =>
[].slice.call(input)
Expand Down Expand Up @@ -204,10 +203,7 @@ export default class PageLoader {
* @param {string} asPath the URL as shown in browser (virtual path); used for dynamic routes
*/
getDataHref(href: string, asPath: string, ssg: boolean) {
const { pathname: hrefPathname, searchParams, search } = parseRelativeUrl(
href
)
const query = searchParamsToUrlQuery(searchParams)
const { pathname: hrefPathname, query, search } = parseRelativeUrl(href)
const { pathname: asPathname } = parseRelativeUrl(asPath)
const route = normalizeRoute(hrefPathname)

Expand Down
4 changes: 1 addition & 3 deletions packages/next/next-server/lib/router/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ export default class Router implements BaseRouter {

let parsed = parseRelativeUrl(url)

let { pathname, searchParams } = parsed
let { pathname, query } = parsed

parsed = this._resolveHref(parsed, pages) as typeof parsed

Expand All @@ -572,8 +572,6 @@ export default class Router implements BaseRouter {
url = formatWithValidation(parsed)
}

const query = searchParamsToUrlQuery(searchParams)

// url and as should always be prefixed with basePath by this
// point by either next/link or router.push/replace so strip the
// basePath from the pathname to match the pages dir 1-to-1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getLocationOrigin } from '../../utils'
import { searchParamsToUrlQuery } from './querystring'

const DUMMY_BASE = new URL(
typeof window === 'undefined' ? 'http://n' : getLocationOrigin()
Expand Down Expand Up @@ -29,7 +30,7 @@ export function parseRelativeUrl(url: string, base?: string) {
}
return {
pathname,
searchParams,
query: searchParamsToUrlQuery(searchParams),
search,
hash,
href: href.slice(DUMMY_BASE.origin.length),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default function prepareDestination(

parsedDestination = {
pathname,
searchParams,
query: searchParamsToUrlQuery(searchParams),
hash,
protocol,
hostname,
Expand All @@ -45,9 +45,6 @@ export default function prepareDestination(
}
}

parsedDestination.query = searchParamsToUrlQuery(
parsedDestination.searchParams
)
const destQuery = parsedDestination.query
const destPath = `${parsedDestination.pathname!}${
parsedDestination.hash || ''
Expand Down Expand Up @@ -108,7 +105,6 @@ export default function prepareDestination(
parsedDestination.pathname = pathname
parsedDestination.hash = `${hash ? '#' : ''}${hash || ''}`
delete parsedDestination.search
delete parsedDestination.searchParams
} catch (err) {
if (err.message.match(/Expected .*? to not repeat, but got an array/)) {
throw new Error(
Expand Down

0 comments on commit 64fb738

Please sign in to comment.