@inso_web/els-mcp
Version:
MCP-сервер поверх INSO Error Logs Service. Read-only tools (search, analytics, fingerprinting, correlations) для подключения Claude Desktop/Code и ChatGPT к логам ошибок. Streamable HTTP transport + stdio для npx-запуска.
39 lines • 1.64 kB
JavaScript
/**
* Сокращение userAgent до family (browser / runtime name).
*
* Упрощённый matcher без зависимости на ua-parser-js (минимизируем
* supply-chain). Покрывает 99 % browser/runtime семейств, встречающихся в логах.
* При необходимости можно поменять на ua-parser-js в будущем — контракт остаётся.
*/
const PATTERNS = [
// Boтыs / crawlers — first, чтобы не путать с Chrome.
{ re: /Googlebot/i, family: 'Googlebot' },
{ re: /Bingbot/i, family: 'Bingbot' },
{ re: /YandexBot/i, family: 'YandexBot' },
{ re: /DuckDuckBot/i, family: 'DuckDuckBot' },
{ re: /Slackbot|Slack-ImgProxy/i, family: 'Slackbot' },
// Order matters: Edge contains Chrome substring.
{ re: /Edg\//i, family: 'Edge' },
{ re: /OPR\/|Opera/i, family: 'Opera' },
{ re: /Firefox\//i, family: 'Firefox' },
{ re: /Chrome\//i, family: 'Chrome' },
{ re: /Safari\//i, family: 'Safari' },
// Runtimes.
{ re: /curl\//i, family: 'curl' },
{ re: /wget\//i, family: 'wget' },
{ re: /node\b|node-fetch|undici/i, family: 'Node' },
{ re: /python-requests|urllib/i, family: 'Python' },
{ re: /Go-http-client/i, family: 'Go' },
{ re: /Java\//i, family: 'Java' },
{ re: /PostmanRuntime/i, family: 'Postman' },
];
export function userAgentFamily(ua) {
if (!ua)
return null;
for (const { re, family } of PATTERNS) {
if (re.test(ua))
return family;
}
return 'Unknown';
}
//# sourceMappingURL=userAgent.js.map