normalized url menus

This commit is contained in:
Profile Profile
2026-03-15 10:41:55 +03:00
parent 636bc47155
commit 952dfda73c
8 changed files with 183 additions and 151 deletions

31
src/lib/utils/url.ts Normal file
View 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;
}
}