normalized url menus
This commit is contained in:
31
src/lib/utils/url.ts
Normal file
31
src/lib/utils/url.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Нормализует URL, заменяя полный домен на относительный путь
|
||||
* @param url - исходный URL
|
||||
* @returns нормализованный URL (путь + query + hash)
|
||||
*/
|
||||
export function normalizeMenuUrl(url: string): string {
|
||||
try {
|
||||
const urlObj = new URL(url);
|
||||
// Возвращаем путь с query параметрами и хешем, если они есть
|
||||
return urlObj.pathname + urlObj.search + urlObj.hash;
|
||||
} catch {
|
||||
// Если URL невалидный, возвращаем как есть
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, является ли URL внешним
|
||||
* @param url - URL для проверки
|
||||
* @returns true если URL внешний
|
||||
*/
|
||||
export function isExternalUrl(url: string): boolean {
|
||||
try {
|
||||
const urlObj = new URL(url);
|
||||
return urlObj.protocol.startsWith('http') &&
|
||||
!urlObj.hostname.includes('localhost') &&
|
||||
!urlObj.hostname.includes('127.0.0.1');
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user