preactjs/wmr

Router segment wildcards don't match when no segment is provided

ollelogdahl opened this issue · 1 comments

Describe the bug
When trying to resolve a subrouter that has a / path, it fails.

To Reproduce
Steps to reproduce the behavior:

function Ok() {
	return (
		<p>Ok</p>
	)
}

function Inner() {
	return (
		<Router>
			<Route path='/' component={Ok} />
			<Route path='/a' component={Ok} />
		</Router>
	)
}

function Outer() {
	return (
		<LocationProvider>
			<Router>
				<Inner path='/more/*' />
				<Inner path='/*' />
			</Router>
		</LocationProvider>
	)
}

render(<Outer />, document.body);

Expected behavior

I expect / in a subrouter to resolve if there is no extention to what the outer router matched.

  • / Should resolve
  • /a Should resolve
  • /more Should resolve
  • /more/a Should resolve

Only /a and /more/a resolves at the moment.

Bug occurs with:
Just using preact-iso in dev-mode.

Desktop (please complete the following information):

  • OS: Linux
  • Browser: Firefox
  • Node Version: 18.19.1
  • WMR Version: preact-iso@2.3.1

Personally, I'd call this behavior correct. / and /* are two different patterns and should be handled as such.