This commit is contained in:
payacom
2026-09-09 10:19:27 +03:30
parent bf41ad4e0f
commit 2d5505065b
28 changed files with 872 additions and 88 deletions

View File

@@ -0,0 +1,34 @@
// پارسر سبک UA — بدون وابستگی خارجی؛ فقط چیزهایی که برای گزارش دستگاه/مرورگر/سیستم‌عامل
// توی آنالیتیکس لازمه (نه یک UA-parser کامل)
export type ParsedUserAgent = {
device: string;
browser: string;
os: string;
};
export function parseUserAgent(ua: string): ParsedUserAgent {
const s = ua || "";
let os = "Other";
if (/windows/i.test(s)) os = "Windows";
else if (/iphone|ipad|ipod/i.test(s)) os = "iOS";
else if (/android/i.test(s)) os = "Android";
else if (/mac os x/i.test(s)) os = "macOS";
else if (/linux/i.test(s)) os = "Linux";
let browser = "Other";
if (/edg\//i.test(s)) browser = "Edge";
else if (/samsungbrowser/i.test(s)) browser = "Samsung Internet";
else if (/firefox\//i.test(s)) browser = "Firefox";
else if (/crios\//i.test(s)) browser = "Chrome (iOS)";
else if (/fxios\//i.test(s)) browser = "Firefox (iOS)";
else if (/chrome\//i.test(s)) browser = "Chrome";
else if (/version\/.+safari/i.test(s)) browser = "Safari";
else if (/safari\//i.test(s)) browser = "Safari";
let device = "Desktop";
if (/ipad|tablet/i.test(s)) device = "Tablet";
else if (/mobile|iphone|android/i.test(s)) device = "Mobile";
return { device, browser, os };
}