mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
Bump version 2.0.3
This commit is contained in:
parent
6a41513df4
commit
af8acf9078
18
CHANGELOG.md
18
CHANGELOG.md
@ -65,6 +65,24 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Version 2.0.3
|
||||||
|
|
||||||
|
- Add new browser: Dooble, Ecosia, LG Browser, Otter, qutebrowser, Surf
|
||||||
|
- Add new device: BLU, Facebook Portal TV
|
||||||
|
- Improve device detection: Archos, LG, Meta Quest
|
||||||
|
- Remove jazzer.js fuzz test
|
||||||
|
- Improve `withClientHints()`:
|
||||||
|
- Browser naming adjustments:
|
||||||
|
- `HuaweiBrowser` => `Huawei Browser`
|
||||||
|
- `Miui Browser` => `MIUI Browser`
|
||||||
|
- `OperaMobile` => `Opera Mobi`
|
||||||
|
- `YaBrowser` => `Yandex`
|
||||||
|
- `extensions` submodule:
|
||||||
|
- Add new Crawler: AdIdxBot, Linespider, LinkedInBot, OpenAI Image Downloader, SemrushBot, Yahoo! Slurp
|
||||||
|
- Add new Fetcher: Better Uptime Bot, Google-PageRenderer, GoogleImageProxy, MicrosoftPreview, Snap URL Preview, SkypeUriPreview, TelegramBot
|
||||||
|
- Add new Vehicles: BMW, Jeep
|
||||||
|
- Add OS detection of WhatsApp user-agent
|
||||||
|
|
||||||
## Version 2.0.2
|
## Version 2.0.2
|
||||||
|
|
||||||
- Fix TypeScript dependency issue
|
- Fix TypeScript dependency issue
|
||||||
|
6
dist/ua-parser.min.js
vendored
6
dist/ua-parser.min.js
vendored
File diff suppressed because one or more lines are too long
6
dist/ua-parser.min.mjs
vendored
6
dist/ua-parser.min.mjs
vendored
File diff suppressed because one or more lines are too long
6
dist/ua-parser.pack.js
vendored
6
dist/ua-parser.pack.js
vendored
File diff suppressed because one or more lines are too long
6
dist/ua-parser.pack.mjs
vendored
6
dist/ua-parser.pack.mjs
vendored
File diff suppressed because one or more lines are too long
1588
package-lock.json
generated
1588
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "UAParser.js",
|
"title": "UAParser.js",
|
||||||
"name": "ua-parser-js",
|
"name": "ua-parser-js",
|
||||||
"version": "2.0.2",
|
"version": "2.0.3",
|
||||||
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
|
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
|
||||||
"description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent & Client Hints data. Supports browser & node.js environment",
|
"description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent & Client Hints data. Supports browser & node.js environment",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
2
src/enums/ua-parser-enums.d.ts
vendored
2
src/enums/ua-parser-enums.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
// Type definitions for Enums submodule of UAParser.js v2.0.2
|
// Type definitions for Enums submodule of UAParser.js v2.0.3
|
||||||
// Project: https://github.com/faisalman/ua-parser-js
|
// Project: https://github.com/faisalman/ua-parser-js
|
||||||
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Enums for UAParser.js v2.0.2
|
/* Enums for UAParser.js v2.0.3
|
||||||
https://github.com/faisalman/ua-parser-js
|
https://github.com/faisalman/ua-parser-js
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License */
|
AGPLv3 License */
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Source: /src/enums/ua-parser-enums.js
|
// Source: /src/enums/ua-parser-enums.js
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Enums for UAParser.js v2.0.2
|
/* Enums for UAParser.js v2.0.3
|
||||||
https://github.com/faisalman/ua-parser-js
|
https://github.com/faisalman/ua-parser-js
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License */
|
AGPLv3 License */
|
||||||
@ -25,6 +25,7 @@ const Browser = Object.freeze({
|
|||||||
BAIDU: 'Baidu Browser',
|
BAIDU: 'Baidu Browser',
|
||||||
BASILISK: 'Basilisk',
|
BASILISK: 'Basilisk',
|
||||||
BLAZER: 'Blazer',
|
BLAZER: 'Blazer',
|
||||||
|
BLU: 'BLU',
|
||||||
BOLT: 'Bolt',
|
BOLT: 'Bolt',
|
||||||
BOWSER: 'Bowser',
|
BOWSER: 'Bowser',
|
||||||
BRAVE: 'Brave',
|
BRAVE: 'Brave',
|
||||||
@ -41,9 +42,11 @@ const Browser = Object.freeze({
|
|||||||
DAUM: 'Daum',
|
DAUM: 'Daum',
|
||||||
DILLO: 'Dillo',
|
DILLO: 'Dillo',
|
||||||
DOLPHIN: 'Dolphin',
|
DOLPHIN: 'Dolphin',
|
||||||
|
DOOBLE: 'Dooble',
|
||||||
DORIS: 'Doris',
|
DORIS: 'Doris',
|
||||||
DRAGON: 'Dragon',
|
DRAGON: 'Dragon',
|
||||||
DUCKDUCKGO: 'DuckDuckGo',
|
DUCKDUCKGO: 'DuckDuckGo',
|
||||||
|
ECOSIA: 'Ecosia',
|
||||||
EDGE: 'Edge',
|
EDGE: 'Edge',
|
||||||
EPIPHANY: 'Epiphany',
|
EPIPHANY: 'Epiphany',
|
||||||
FACEBOOK: 'Facebook',
|
FACEBOOK: 'Facebook',
|
||||||
@ -82,6 +85,7 @@ const Browser = Object.freeze({
|
|||||||
KINDLE: 'Kindle',
|
KINDLE: 'Kindle',
|
||||||
LENOVO: 'Smart Lenovo Browser',
|
LENOVO: 'Smart Lenovo Browser',
|
||||||
LADYBIRD: 'Ladybird',
|
LADYBIRD: 'Ladybird',
|
||||||
|
LG: 'LG Browser',
|
||||||
LIBREWOLF: 'LibreWolf',
|
LIBREWOLF: 'LibreWolf',
|
||||||
LIEBAO: 'LBBROWSER',
|
LIEBAO: 'LBBROWSER',
|
||||||
LINE: 'Line',
|
LINE: 'Line',
|
||||||
@ -106,10 +110,12 @@ const Browser = Object.freeze({
|
|||||||
OMNIWEB: 'OmniWeb',
|
OMNIWEB: 'OmniWeb',
|
||||||
OPERA: 'Opera',
|
OPERA: 'Opera',
|
||||||
OPERA_COAST: 'Opera Coast',
|
OPERA_COAST: 'Opera Coast',
|
||||||
|
OPERA_GX: 'Opera GX',
|
||||||
OPERA_MINI: 'Opera Mini',
|
OPERA_MINI: 'Opera Mini',
|
||||||
OPERA_MOBI: 'Opera Mobi',
|
OPERA_MOBI: 'Opera Mobi',
|
||||||
OPERA_TABLET: 'Opera Tablet',
|
OPERA_TABLET: 'Opera Tablet',
|
||||||
OPERA_TOUCH: 'Opera Touch',
|
OPERA_TOUCH: 'Opera Touch',
|
||||||
|
OTTER: 'Otter',
|
||||||
OVI: 'OviBrowser',
|
OVI: 'OviBrowser',
|
||||||
PALEMOON: 'PaleMoon',
|
PALEMOON: 'PaleMoon',
|
||||||
PHANTOMJS: 'PhantomJS',
|
PHANTOMJS: 'PhantomJS',
|
||||||
@ -121,6 +127,7 @@ const Browser = Object.freeze({
|
|||||||
QQ_LITE: 'QQBrowserLite',
|
QQ_LITE: 'QQBrowserLite',
|
||||||
QUARK: 'Quark',
|
QUARK: 'Quark',
|
||||||
QUPZILLA: 'QupZilla',
|
QUPZILLA: 'QupZilla',
|
||||||
|
QUTEBROWSER: 'qutebrowser',
|
||||||
REKONQ: 'rekonq',
|
REKONQ: 'rekonq',
|
||||||
ROCKMELT: 'Rockmelt',
|
ROCKMELT: 'Rockmelt',
|
||||||
SAFARI: 'Safari',
|
SAFARI: 'Safari',
|
||||||
@ -137,6 +144,7 @@ const Browser = Object.freeze({
|
|||||||
SNAPCHAT: 'Snapchat',
|
SNAPCHAT: 'Snapchat',
|
||||||
SOGOU_EXPLORER: 'Sogou Explorer',
|
SOGOU_EXPLORER: 'Sogou Explorer',
|
||||||
SOGOU_MOBILE: 'Sogou Mobile',
|
SOGOU_MOBILE: 'Sogou Mobile',
|
||||||
|
SURF: 'Surf',
|
||||||
SWIFTFOX: 'Swiftfox',
|
SWIFTFOX: 'Swiftfox',
|
||||||
TESLA: 'Tesla',
|
TESLA: 'Tesla',
|
||||||
TIKTOK: 'TikTok',
|
TIKTOK: 'TikTok',
|
||||||
|
2
src/extensions/ua-parser-extensions.d.ts
vendored
2
src/extensions/ua-parser-extensions.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
// Type definitions for Helpers submodule of UAParser.js v2.0.2
|
// Type definitions for Helpers submodule of UAParser.js v2.0.3
|
||||||
// Project: https://github.com/faisalman/ua-parser-js
|
// Project: https://github.com/faisalman/ua-parser-js
|
||||||
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Extensions for UAParser.js v2.0.2
|
/* Extensions for UAParser.js v2.0.3
|
||||||
https://github.com/faisalman/ua-parser-js
|
https://github.com/faisalman/ua-parser-js
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License */
|
AGPLv3 License */
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Source: /src/extensions/ua-parser-extensions.js
|
// Source: /src/extensions/ua-parser-extensions.js
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Extensions for UAParser.js v2.0.2
|
/* Extensions for UAParser.js v2.0.3
|
||||||
https://github.com/faisalman/ua-parser-js
|
https://github.com/faisalman/ua-parser-js
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License */
|
AGPLv3 License */
|
||||||
@ -46,25 +46,25 @@ const Crawlers = Object.freeze({
|
|||||||
[
|
[
|
||||||
// AhrefsBot - https://ahrefs.com/robot
|
// AhrefsBot - https://ahrefs.com/robot
|
||||||
// Amazonbot - https://developer.amazon.com/amazonbot
|
// Amazonbot - https://developer.amazon.com/amazonbot
|
||||||
// Bingbot - http://www.bing.com/bingbot.htm
|
// Bingbot / AdIdxBot - https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0
|
||||||
// CCBot - https://commoncrawl.org/faq
|
// CCBot - https://commoncrawl.org/faq
|
||||||
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
||||||
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
||||||
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
||||||
// GPTBot - https://platform.openai.com/docs/gptbot
|
// GPTBot - https://platform.openai.com/docs/gptbot
|
||||||
|
// LinkedInBot - http://www.linkedin.com
|
||||||
// MJ12bot - https://mj12bot.com/
|
// MJ12bot - https://mj12bot.com/
|
||||||
// MojeekBot - https://www.mojeek.com/bot.html
|
// MojeekBot - https://www.mojeek.com/bot.html
|
||||||
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
||||||
// PerplexityBot - https://perplexity.ai/perplexitybot
|
// PerplexityBot - https://perplexity.ai/perplexitybot
|
||||||
// SemrushBot - http://www.semrush.com/bot.html
|
|
||||||
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
||||||
/((?:ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
/((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|linkedin|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
||||||
|
|
||||||
// Applebot - http://apple.com/go/applebot
|
// Applebot - http://apple.com/go/applebot
|
||||||
/(applebot(?:-extended)?)\/([\w\.]+)/i,
|
/(applebot(?:-extended)?)\/?([\w\.]*)/i,
|
||||||
|
|
||||||
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
||||||
/(baiduspider)[-imagevdonsfcpr]{0,6}\/([\w\.]+)/i,
|
/(baiduspider[-imagevdonwsfcpr]{0,7})\/?([\w\.]*)/i,
|
||||||
|
|
||||||
// ClaudeBot (Anthropic)
|
// ClaudeBot (Anthropic)
|
||||||
/(claude(?:bot|-web)|anthropic-ai)\/?([\w\.]*)/i,
|
/(claude(?:bot|-web)|anthropic-ai)\/?([\w\.]*)/i,
|
||||||
@ -82,6 +82,9 @@ const Crawlers = Object.freeze({
|
|||||||
// Internet Archive (archive.org)
|
// Internet Archive (archive.org)
|
||||||
/(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
|
/(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
|
||||||
|
|
||||||
|
// SemrushBot - http://www.semrush.com/bot.html
|
||||||
|
/((?:semrush|splitsignal)bot[-abcfimostw]*)\/?([\w\.-]*)/i,
|
||||||
|
|
||||||
// Sogou Spider
|
// Sogou Spider
|
||||||
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
||||||
|
|
||||||
@ -94,8 +97,8 @@ const Crawlers = Object.freeze({
|
|||||||
// Yeti (Naver)
|
// Yeti (Naver)
|
||||||
/(yeti)\/([\w\.]+)/i,
|
/(yeti)\/([\w\.]+)/i,
|
||||||
|
|
||||||
// aiHitBot / Diffbot / Magpie-Crawler / Omgilibot / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
// aiHitBot / Diffbot / Linespider / Magpie-Crawler / Omgilibot / OpenAI Image Downloader / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
||||||
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|openai image downloader|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |line|yisou)spider)\/?([\w\.]*)/i
|
||||||
],
|
],
|
||||||
|
|
||||||
[NAME, VERSION, [TYPE, CRAWLER]],
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
||||||
@ -112,7 +115,7 @@ const Crawlers = Object.freeze({
|
|||||||
// Qihoo 360Spider
|
// Qihoo 360Spider
|
||||||
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
||||||
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
||||||
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|(?=yahoo! )slurp)/i
|
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|yahoo! slurp)/i
|
||||||
],
|
],
|
||||||
[NAME, [TYPE, CRAWLER]]
|
[NAME, [TYPE, CRAWLER]]
|
||||||
]
|
]
|
||||||
@ -221,27 +224,35 @@ const Fetchers = Object.freeze({
|
|||||||
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
||||||
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
||||||
// DuckAssistBot - https://duckduckgo.com/duckassistbot/
|
// DuckAssistBot - https://duckduckgo.com/duckassistbot/
|
||||||
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
// Better Uptime / BingPreview / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
||||||
// Google Site Verifier / Meta / Yahoo! Japan
|
// Google Site Verifier / Meta / Yahoo! Japan
|
||||||
// Yandex Bots - https://yandex.com/bots
|
// Yandex Bots - https://yandex.com/bots
|
||||||
/(ahrefssiteaudit|bingpreview|chatgpt-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|telegram|twitter|uptimero)bot|google-site-verification|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
/(ahrefssiteaudit|(?:bing|microsoft)preview|chatgpt-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero)bot|google-site-verification|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
||||||
|
|
||||||
// Bluesky
|
// Bluesky
|
||||||
/(bluesky) cardyb\/([\w\.]+)/i,
|
/(bluesky) cardyb\/([\w\.]+)/i,
|
||||||
|
|
||||||
|
// Skype
|
||||||
|
/(skypeuripreview) preview\/([\w\.]+)/i,
|
||||||
|
|
||||||
// Slackbot - https://api.slack.com/robots
|
// Slackbot - https://api.slack.com/robots
|
||||||
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
||||||
|
|
||||||
// WhatsApp
|
// WhatsApp
|
||||||
/(whatsapp)\/([\w\.]+)[\/ ][ianw]/i
|
/(whatsapp)\/([\w\.]+)/i
|
||||||
],
|
],
|
||||||
[NAME, VERSION, [TYPE, FETCHER]],
|
[NAME, VERSION, [TYPE, FETCHER]],
|
||||||
|
|
||||||
[
|
[
|
||||||
// Google Bots / Cohere / Snapchat / Vercelbot / Yandex Bots
|
// Google Bots / Cohere / Snapchat / Vercelbot / Yandex Bots
|
||||||
/(cohere-ai|vercelbot|feedfetcher-google|google(?:-read-aloud|producer)|(?=bot; )snapchat|yandex(?:sitelinks|userproxy))/i
|
/((?:better uptime |telegram|vercel)bot|cohere-ai|feedfetcher-google|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|yandex(?:sitelinks|userproxy))/i
|
||||||
],
|
],
|
||||||
[NAME, [TYPE, FETCHER]],
|
[NAME, [TYPE, FETCHER]],
|
||||||
|
],
|
||||||
|
|
||||||
|
os : [
|
||||||
|
[/whatsapp\/[\d\.]+ (a|i)/i],
|
||||||
|
[[NAME, os => os == 'A' ? 'Android' : 'iOS' ]]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -252,10 +263,12 @@ const Fetchers = Object.freeze({
|
|||||||
const InApps = Object.freeze({
|
const InApps = Object.freeze({
|
||||||
browser : [
|
browser : [
|
||||||
// Slack
|
// Slack
|
||||||
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, INAPP]],
|
[/(?:slack(?=.+electron|.+ios)|chatlyio)\/([\d\.]+)/i],
|
||||||
|
[VERSION, [NAME, 'Slack'], [TYPE, INAPP]],
|
||||||
|
|
||||||
// Yahoo! Japan
|
// Yahoo! Japan
|
||||||
[/jp\.co\.yahoo\.android\.yjtop\/([\d\.]+)/i], [VERSION, 'Yahoo! Japan', [TYPE, INAPP]]
|
[/jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
|
||||||
|
[VERSION, [NAME, 'Yahoo! Japan'], [TYPE, INAPP]]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -331,15 +344,20 @@ const Libraries = Object.freeze({
|
|||||||
|
|
||||||
const Vehicles = Object.freeze({
|
const Vehicles = Object.freeze({
|
||||||
device : [
|
device : [
|
||||||
[
|
[/aftlbt962e2/i], // BMW
|
||||||
/dilink.+(byd) auto/i, // BYD
|
[[VENDOR, 'BMW']],
|
||||||
], [VENDOR], [
|
|
||||||
|
|
||||||
/(rivian) (r1t)/i, // Rivian
|
[/dilink.+(byd) auto/i], // BYD
|
||||||
], [VENDOR, MODEL], [
|
[VENDOR],
|
||||||
|
|
||||||
/vcc.+netfront/i, // Volvo
|
[/aftlft962x3/i], // Jeep
|
||||||
], [[VENDOR, 'Volvo']]
|
[[VENDOR, 'Jeep'], [MODEL, 'Wagooner']],
|
||||||
|
|
||||||
|
[/(rivian) (r1t)/i], // Rivian
|
||||||
|
[VENDOR, MODEL],
|
||||||
|
|
||||||
|
[/vcc.+netfront/i], // Volvo
|
||||||
|
[[VENDOR, 'Volvo']]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -353,6 +371,9 @@ const Bots = Object.freeze({
|
|||||||
...Crawlers.browser,
|
...Crawlers.browser,
|
||||||
...Fetchers.browser,
|
...Fetchers.browser,
|
||||||
...Libraries.browser
|
...Libraries.browser
|
||||||
|
],
|
||||||
|
os : [
|
||||||
|
...Fetchers.os
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
2
src/helpers/ua-parser-helpers.d.ts
vendored
2
src/helpers/ua-parser-helpers.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
// Type definitions for Helpers submodule of UAParser.js v2.0.2
|
// Type definitions for Helpers submodule of UAParser.js v2.0.3
|
||||||
// Project: https://github.com/faisalman/ua-parser-js
|
// Project: https://github.com/faisalman/ua-parser-js
|
||||||
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Helpers for UAParser.js v2.0.2
|
/* Helpers for UAParser.js v2.0.3
|
||||||
https://github.com/faisalman/ua-parser-js
|
https://github.com/faisalman/ua-parser-js
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License */
|
AGPLv3 License */
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Source: /src/helpers/ua-parser-helpers.js
|
// Source: /src/helpers/ua-parser-helpers.js
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Helpers for UAParser.js v2.0.2
|
/* Helpers for UAParser.js v2.0.3
|
||||||
https://github.com/faisalman/ua-parser-js
|
https://github.com/faisalman/ua-parser-js
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License */
|
AGPLv3 License */
|
||||||
@ -97,6 +97,9 @@ const isAIBot = (resultOrUA) => [
|
|||||||
// Perplexity
|
// Perplexity
|
||||||
'perplexitybot',
|
'perplexitybot',
|
||||||
|
|
||||||
|
// Semrush
|
||||||
|
'semrushbot-ocob',
|
||||||
|
|
||||||
// Timpi
|
// Timpi
|
||||||
'timpibot',
|
'timpibot',
|
||||||
|
|
||||||
|
2
src/main/ua-parser.d.ts
vendored
2
src/main/ua-parser.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
// Type definitions for UAParser.js v2.0.2
|
// Type definitions for UAParser.js v2.0.3
|
||||||
// Project: https://github.com/faisalman/ua-parser-js
|
// Project: https://github.com/faisalman/ua-parser-js
|
||||||
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
/* UAParser.js v2.0.2
|
/* UAParser.js v2.0.3
|
||||||
Copyright © 2012-2024 Faisal Salman <f@faisalman.com>
|
Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License *//*
|
AGPLv3 License *//*
|
||||||
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
||||||
Supports browser & node.js environment.
|
Supports browser & node.js environment.
|
||||||
@ -19,7 +19,7 @@
|
|||||||
// Constants
|
// Constants
|
||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
var LIBVERSION = '2.0.2',
|
var LIBVERSION = '2.0.3',
|
||||||
UA_MAX_LENGTH = 500,
|
UA_MAX_LENGTH = 500,
|
||||||
USER_AGENT = 'user-agent',
|
USER_AGENT = 'user-agent',
|
||||||
EMPTY = '',
|
EMPTY = '',
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
// Source: /src/main/ua-parser.js
|
// Source: /src/main/ua-parser.js
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
/* UAParser.js v2.0.2
|
/* UAParser.js v2.0.3
|
||||||
Copyright © 2012-2024 Faisal Salman <f@faisalman.com>
|
Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
|
||||||
AGPLv3 License *//*
|
AGPLv3 License *//*
|
||||||
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
||||||
Supports browser & node.js environment.
|
Supports browser & node.js environment.
|
||||||
@ -21,7 +21,7 @@
|
|||||||
// Constants
|
// Constants
|
||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
var LIBVERSION = '2.0.2',
|
var LIBVERSION = '2.0.3',
|
||||||
UA_MAX_LENGTH = 500,
|
UA_MAX_LENGTH = 500,
|
||||||
USER_AGENT = 'user-agent',
|
USER_AGENT = 'user-agent',
|
||||||
EMPTY = '',
|
EMPTY = '',
|
||||||
@ -355,11 +355,11 @@
|
|||||||
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
|
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
|
||||||
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
||||||
|
|
||||||
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble
|
||||||
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,
|
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\/([-\w\.]+)/i,
|
||||||
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
|
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
|
||||||
/(heytap|ovi|115)browser\/([\d\.]+)/i, // HeyTap/Ovi/115
|
/(heytap|ovi|115|surf)browser\/([\d\.]+)/i, // HeyTap/Ovi/115/Surf
|
||||||
/(weibo)__([\d\.]+)/i // Weibo
|
/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i // Ecosia/Weibo
|
||||||
], [NAME, VERSION], [
|
], [NAME, VERSION], [
|
||||||
/quark(?:pc)?\/([-\w\.]+)/i // Quark
|
/quark(?:pc)?\/([-\w\.]+)/i // Quark
|
||||||
], [VERSION, [NAME, 'Quark']], [
|
], [VERSION, [NAME, 'Quark']], [
|
||||||
@ -587,8 +587,11 @@
|
|||||||
/\b(opd2(\d{3}a?))(?: bui|\))/i
|
/\b(opd2(\d{3}a?))(?: bui|\))/i
|
||||||
], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [
|
], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [
|
||||||
|
|
||||||
|
// BLU Vivo Series
|
||||||
|
/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
|
||||||
|
], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [
|
||||||
// Vivo
|
// Vivo
|
||||||
/vivo (\w+)(?: bui|\))/i,
|
/; vivo (\w+)(?: bui|\))/i,
|
||||||
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
||||||
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
@ -608,7 +611,7 @@
|
|||||||
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
||||||
], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
|
], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
|
||||||
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
||||||
/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,
|
/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,
|
||||||
/\blg-?([\d\w]+) bui/i
|
/\blg-?([\d\w]+) bui/i
|
||||||
], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
@ -715,6 +718,14 @@
|
|||||||
/droid.+; (a(?:015|06[35]|142p?))/i
|
/droid.+; (a(?:015|06[35]|142p?))/i
|
||||||
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
|
// Archos
|
||||||
|
/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
|
||||||
|
/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
|
||||||
|
], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [
|
||||||
|
/archos ([\w ]+)( b|\))/i,
|
||||||
|
/; (ac[3-6]\d\w{2,8})( b|\))/i
|
||||||
|
], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// MIXED
|
// MIXED
|
||||||
/(imo) (tab \w+)/i, // IMO
|
/(imo) (tab \w+)/i, // IMO
|
||||||
/(infinix) (x1101b?)/i // Infinix XPad
|
/(infinix) (x1101b?)/i // Infinix XPad
|
||||||
@ -722,7 +733,7 @@
|
|||||||
|
|
||||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
|
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
|
||||||
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
|
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
|
||||||
/; (hmd|imo) ([\w ]+?)(?: bui|\))/i, // HMD/IMO
|
/; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, // BLU/HMD/IMO/TCL
|
||||||
/(hp) ([\w ]+\w)/i, // HP iPAQ
|
/(hp) ([\w ]+\w)/i, // HP iPAQ
|
||||||
/(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
|
/(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
|
||||||
/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i, // Lenovo
|
/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i, // Lenovo
|
||||||
@ -730,7 +741,6 @@
|
|||||||
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
||||||
|
|
||||||
/(kobo)\s(ereader|touch)/i, // Kobo
|
/(kobo)\s(ereader|touch)/i, // Kobo
|
||||||
/(archos) (gamepad2?)/i, // Archos
|
|
||||||
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
||||||
/(kindle)\/([\w\.]+)/i // Kindle
|
/(kindle)\/([\w\.]+)/i // Kindle
|
||||||
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
||||||
@ -758,7 +768,9 @@
|
|||||||
], [VENDOR, [TYPE, SMARTTV]], [
|
], [VENDOR, [TYPE, SMARTTV]], [
|
||||||
/hbbtv.+maple;(\d+)/i
|
/hbbtv.+maple;(\d+)/i
|
||||||
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
|
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
|
||||||
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
|
/tcast.+(lg)e?. ([-\w]+)/i // LG SmartTV
|
||||||
|
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
|
||||||
|
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
|
||||||
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
||||||
/(apple) ?tv/i // Apple TV
|
/(apple) ?tv/i // Apple TV
|
||||||
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
||||||
@ -770,6 +782,8 @@
|
|||||||
], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
||||||
/crkey/i // Google Chromecast, Linux-based or unknown
|
/crkey/i // Google Chromecast, Linux-based or unknown
|
||||||
], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
||||||
|
/(portaltv)/i // Facebook Portal TV
|
||||||
|
], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [
|
||||||
/droid.+aft(\w+)( bui|\))/i // Fire TV
|
/droid.+aft(\w+)( bui|\))/i // Fire TV
|
||||||
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
||||||
/(shield \w+ tv)/i // Nvidia Shield TV
|
/(shield \w+ tv)/i // Nvidia Shield TV
|
||||||
@ -838,7 +852,7 @@
|
|||||||
], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [
|
], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [
|
||||||
/(pico) (4|neo3(?: link|pro)?)/i // Pico
|
/(pico) (4|neo3(?: link|pro)?)/i // Pico
|
||||||
], [VENDOR, MODEL, [TYPE, XR]], [
|
], [VENDOR, MODEL, [TYPE, XR]], [
|
||||||
/; (quest( \d| pro)?)/i // Oculus Quest
|
/(quest( \d| pro)?s?).+vr/i // Meta Quest
|
||||||
], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [
|
], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [
|
||||||
|
|
||||||
///////////////////
|
///////////////////
|
||||||
@ -933,7 +947,7 @@
|
|||||||
/(ubuntu) ([\w\.]+) like android/i // Ubuntu Touch
|
/(ubuntu) ([\w\.]+) like android/i // Ubuntu Touch
|
||||||
], [[NAME, /(.+)/, '$1 Touch'], VERSION], [
|
], [[NAME, /(.+)/, '$1 Touch'], VERSION], [
|
||||||
// Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
|
// Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
|
||||||
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i
|
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/\.; ]?([\d\.]*)/i
|
||||||
], [NAME, VERSION], [
|
], [NAME, VERSION], [
|
||||||
/\(bb(10);/i // BlackBerry 10
|
/\(bb(10);/i // BlackBerry 10
|
||||||
], [VERSION, [NAME, BLACKBERRY]], [
|
], [VERSION, [NAME, BLACKBERRY]], [
|
||||||
@ -1215,7 +1229,11 @@
|
|||||||
'Chrome' : 'Google Chrome',
|
'Chrome' : 'Google Chrome',
|
||||||
'Edge' : 'Microsoft Edge',
|
'Edge' : 'Microsoft Edge',
|
||||||
'Chrome WebView' : 'Android WebView',
|
'Chrome WebView' : 'Android WebView',
|
||||||
'Chrome Headless' : 'HeadlessChrome'
|
'Chrome Headless' : 'HeadlessChrome',
|
||||||
|
'Huawei Browser' : 'HuaweiBrowser',
|
||||||
|
'MIUI Browser' : 'Miui Browser',
|
||||||
|
'Opera Mobi' : 'OperaMobile',
|
||||||
|
'Yandex' : 'YaBrowser'
|
||||||
});
|
});
|
||||||
this.set(NAME, brandName)
|
this.set(NAME, brandName)
|
||||||
.set(VERSION, brandVersion)
|
.set(VERSION, brandVersion)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user