diff --git a/src/__tests__/browser-router.test.ts b/src/__tests__/browser-router.test.ts index 098f091..00b5477 100644 --- a/src/__tests__/browser-router.test.ts +++ b/src/__tests__/browser-router.test.ts @@ -234,3 +234,13 @@ test('works with relative paths', () => { expect(output).toEqual('/blog/asd/comments'); }); + +test('allows basename option', () => { + const { href } = typesafeBrowserRouter([{ path: '/' }], { + basename: '/app', + }); + + const output = href({ path: '/' }); + + expect(output).toEqual('/'); +}); diff --git a/src/browser-router.ts b/src/browser-router.ts index 26ecec6..8f154b9 100644 --- a/src/browser-router.ts +++ b/src/browser-router.ts @@ -42,7 +42,9 @@ const joinValidWith = (...valid: any[]) => valid.filter(Boolean).join(separator); -export const typesafeBrowserRouter = (routes: NarrowArray) => { +type OptionsType = typeof createBrowserRouter extends (routes: unknown, opts: infer OptsType) => any ? OptsType : never; + +export const typesafeBrowserRouter = (routes: NarrowArray, opts?: OptionsType) => { type Paths = ExtractPaths; function href

( @@ -65,7 +67,7 @@ export const typesafeBrowserRouter = (routes: Narro } return { - router: createBrowserRouter(routes as RouteObject[]), + router: createBrowserRouter(routes as RouteObject[], opts), href, }; };