From 3aabcd644207cf88972f8d7fb2ce135d5cfe8a1c Mon Sep 17 00:00:00 2001 From: lonelyhentxi Date: Sat, 22 Feb 2025 23:36:07 +0800 Subject: [PATCH] fix: fix router navigateUrl --- package.json | 2 +- src/adapters/tanstack-router/index.ts | 4 ++-- src/auto-login/auto-login-partial-routes.guard.ts | 2 +- src/router/index.ts | 10 ++++++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 6e50d78..5de6711 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oidc-client-rx", - "version": "0.1.0-alpha.5", + "version": "0.1.0-alpha.6", "homepage": "https://github.com/lonelyhentxi/oidc-client-rx", "author": "lonelyhentxi", "description": "ReactiveX enhanced OIDC and OAuth2 protocol support for browser-based JavaScript applications", diff --git a/src/adapters/tanstack-router/index.ts b/src/adapters/tanstack-router/index.ts index ffe3f86..57498a5 100644 --- a/src/adapters/tanstack-router/index.ts +++ b/src/adapters/tanstack-router/index.ts @@ -1,7 +1,7 @@ import { InjectionToken, inject } from '@outposts/injection-js'; import type { AnyRouter } from '@tanstack/react-router'; import type { AuthFeature } from '../../features'; -import { AbstractRouter } from '../../router'; +import { AbstractRouter, ROUTER_ABS_PATH_PATTERN } from '../../router'; export type TanStackRouter = AnyRouter; @@ -14,7 +14,7 @@ export class TanStackRouterAdapter implements AbstractRouter { navigateByUrl(url: string): void { this.router.navigate({ - href: url, + href: ROUTER_ABS_PATH_PATTERN.test(url) ? url : `/${url}`, }); } diff --git a/src/auto-login/auto-login-partial-routes.guard.ts b/src/auto-login/auto-login-partial-routes.guard.ts index 7e7f0cb..6a12f42 100644 --- a/src/auto-login/auto-login-partial-routes.guard.ts +++ b/src/auto-login/auto-login-partial-routes.guard.ts @@ -1,6 +1,6 @@ import { Injectable, inject } from '@outposts/injection-js'; import { type Observable, of } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; +import { switchMap } from 'rxjs/operators'; import type { AuthOptions } from '../auth-options'; import { AuthStateService } from '../auth-state/auth-state.service'; import { ConfigurationService } from '../config/config.service'; diff --git a/src/router/index.ts b/src/router/index.ts index 1a1ba62..6352050 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -30,6 +30,8 @@ export abstract class AbstractRouter< abstract getCurrentNavigation(): NAVIGATION; } +export const ROUTER_ABS_PATH_PATTERN = /^\//; + export class VanillaLocationRouter extends AbstractRouter { protected document = inject(DOCUMENT); @@ -42,7 +44,7 @@ export class VanillaLocationRouter extends AbstractRouter { } navigateByUrl(url: string): void { - this.location.href = url; + this.location.href = ROUTER_ABS_PATH_PATTERN.test(url) ? url : `/${url}`; } getCurrentNavigation() { @@ -72,7 +74,11 @@ export class VanillaHistoryRouter extends AbstractRouter { } navigateByUrl(url: string): void { - this.history.pushState({}, '', url); + this.history.pushState( + {}, + '', + ROUTER_ABS_PATH_PATTERN.test(url) ? url : `/${url}` + ); } getCurrentNavigation() {