push, replace, and createPath methods accept to parameter which is string or Partial<Path>. The Path seems to be a partial to the native URL which also contains pathname: string, search: string, hash: string.
Also, given the library is used to work with URLs it's tempting to provide the actual URL instances. I often use URL, and its .searchParams to construct, change and manipulate URLs.
Currently, createURL works fine if given an URL instance, however push and replace takes new URL('/foo?bar=biz', 'http://my.base/path') as {}.
What's changed
This PR makes getNextLocation normalize given to to be always a plain object.
(Plus, it makes getNextLocation a bit DRYier)
Possible improvements
If this library aims to support environments without URL, we could add typeof URL === 'function', then assume the given to object is just a Path literal.
The issue to be addressed
push
,replace
, andcreatePath
methods acceptto
parameter which isstring
orPartial<Path>
. ThePath
seems to be a partial to the nativeURL
which also containspathname: string, search: string, hash: string
.Also, given the library is used to work with URLs it's tempting to provide the actual
URL
instances. I often useURL
, and its.searchParams
to construct, change and manipulate URLs.Currently,
createURL
works fine if given anURL
instance, howeverpush
andreplace
takesnew URL('/foo?bar=biz', 'http://my.base/path')
as{}
.What's changed
This PR makes
getNextLocation
normalize givento
to be always a plain object. (Plus, it makesgetNextLocation
a bit DRYier)Possible improvements
If this library aims to support environments without
URL
, we could addtypeof URL === 'function'
, then assume the givento
object is just aPath
literal.