From 061cf0e90f3651a040a1ee64fc5c63d442b93c64 Mon Sep 17 00:00:00 2001
From: Faisal Salman
Date: Fri, 10 Oct 2025 09:58:40 +0700
Subject: [PATCH] Bump version `2.0.6`
---
CHANGELOG.md | 14 ++
README.md | 46 ++--
dist/ua-parser.min.js | 4 +-
dist/ua-parser.min.mjs | 4 +-
dist/ua-parser.pack.js | 4 +-
dist/ua-parser.pack.mjs | 4 +-
package-lock.json | 4 +-
package.json | 10 +-
src/enums/ua-parser-enums.d.ts | 15 +-
src/enums/ua-parser-enums.js | 2 +-
src/enums/ua-parser-enums.mjs | 15 +-
src/extensions/ua-parser-extensions.js | 2 +-
src/extensions/ua-parser-extensions.mjs | 12 +-
src/helpers/ua-parser-helpers.js | 2 +-
src/helpers/ua-parser-helpers.mjs | 2 +-
src/main/ua-parser.d.ts | 2 +-
src/main/ua-parser.js | 4 +-
src/main/ua-parser.mjs | 275 +++++++++++++-----------
test/unit/main.js | 15 +-
19 files changed, 247 insertions(+), 189 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb55cf8..5ef6810 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -69,6 +69,20 @@
---
+## Version 2.0.6
+- Add new CLI feature: processing batch user-agent data from file and output as JSON
+- Fix `setUA()`: trim leading space from user-agent string input
+- Replace `undici` dependency with node's internal `Headers`
+- Add new browser: Bing, Qwant
+- Add new device vendor: Hisense, Wiko
+- Improve browser detection: Mozilla, Pale Moon
+- Improve CPU detection: 68k
+- Improve device detection: Apple, BlackBerry, Huawei, Nokia, Xiaomi
+- Improve OS detection: iOS 26
+- `extensions` submodule:
+ - Add new fetcher: Discordbot, KeybaseBot, Slackbot, Slackbot-LinkExpanding, Slack-ImgProxy, Twitterbot
+ - Add new crawler: Qwantbot-news, SurdotlyBot, SwiftBot
+
## Version 2.0.5
- Add new browser: Zalo
diff --git a/README.md b/README.md
index 03eb487..7bb630f 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@
-
+
# UAParser.js
@@ -58,7 +58,7 @@ see what's new & breaking.
PRO Enterprise |
- | Browser detection |
+ Browser Detection |
⚠️ |
✅ |
✅ |
@@ -66,7 +66,7 @@ see what's new & breaking.
✅ |
- | CPU detection |
+ CPU Detection |
⚠️ |
✅ |
✅ |
@@ -74,7 +74,7 @@ see what's new & breaking.
✅ |
- | Device detection |
+ Device Detection |
⚠️ |
✅ |
✅ |
@@ -82,7 +82,7 @@ see what's new & breaking.
✅ |
- | Engine detection |
+ Rendering Engine Detection |
⚠️ |
✅ |
✅ |
@@ -98,7 +98,7 @@ see what's new & breaking.
✅ |
- | Bot detection |
+ Enhanced+ Accuracy |
❌ |
✅ |
✅ |
@@ -106,7 +106,7 @@ see what's new & breaking.
✅ |
- | AI Bot detection |
+ Bot Detection |
❌ |
✅ |
✅ |
@@ -114,7 +114,7 @@ see what's new & breaking.
✅ |
- | Extras (Apps, Libs, Emails, Media Players, etc) detection |
+ AI Detection |
❌ |
✅ |
✅ |
@@ -122,7 +122,7 @@ see what's new & breaking.
✅ |
- | Enhanced detection result |
+ Extra Detections (Apps, Libs, Emails, Media Players, Crawlers, and more) |
❌ |
✅ |
✅ |
@@ -130,7 +130,7 @@ see what's new & breaking.
✅ |
- | Client Hints support |
+ Client Hints Support |
❌ |
✅ |
✅ |
@@ -138,7 +138,7 @@ see what's new & breaking.
✅ |
- | CommonJS support |
+ CommonJS Support |
✅ |
✅ |
✅ |
@@ -146,7 +146,7 @@ see what's new & breaking.
✅ |
- | ES modules support |
+ ESM Support |
❌ |
✅ |
✅ |
@@ -154,15 +154,15 @@ see what's new & breaking.
✅ |
- | TypeScript declarations |
- ⚠️ |
+ TypeScript Definitions |
+ ✅ |
✅ |
✅ |
✅ |
✅ |
- | npm module available |
+ npm Module Available |
✅ |
✅ |
✅ |
@@ -170,7 +170,7 @@ see what's new & breaking.
✅ |
- | Direct downloads available |
+ Direct Downloads Available |
✅ |
✅ |
✅ |
@@ -178,7 +178,7 @@ see what's new & breaking.
✅ |
- | Allows commercial usage |
+ Commercial Use Allowed |
✅ |
✅ |
❌ |
@@ -186,7 +186,7 @@ see what's new & breaking.
✅ |
- | Permissive (non-copyleft) license |
+ Permissive (non-Copyleft) License |
✅ |
❌ |
✅ |
@@ -194,7 +194,7 @@ see what's new & breaking.
✅ |
- | No open-source obligations |
+ No Open-Source Obligations |
✅ |
❌ |
✅ |
@@ -202,7 +202,7 @@ see what's new & breaking.
✅ |
- | Unlimited end-products |
+ Unlimited End-Products |
✅ |
✅ |
✅ |
@@ -210,7 +210,7 @@ see what's new & breaking.
✅ |
- | Unlimited deployments |
+ Unlimited Deployments |
✅ |
✅ |
✅ |
@@ -218,7 +218,7 @@ see what's new & breaking.
✅ |
- | 1-year product support |
+ 1-year Product Support |
❌ |
❌ |
✅ |
@@ -226,7 +226,7 @@ see what's new & breaking.
✅ |
- | Lifetime updates |
+ Lifetime Updates |
✅ |
✅ |
✅ |
diff --git a/dist/ua-parser.min.js b/dist/ua-parser.min.js
index 98f9ad6..ceb9508 100644
--- a/dist/ua-parser.min.js
+++ b/dist/ua-parser.min.js
@@ -1,4 +1,4 @@
-/* UAParser.js v2.0.5
+/* UAParser.js v2.0.6
Copyright © 2012-2025 Faisal Salman
AGPLv3 License */
-(function(window,undefined){"use strict";var LIBVERSION="2.0.5",UA_MAX_LENGTH=500,USER_AGENT="user-agent",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",UA_BROWSER="browser",UA_CPU="cpu",UA_DEVICE="device",UA_ENGINE="engine",UA_OS="os",UA_RESULT="result",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",MAJOR="major",MODEL="model",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",XR="xr",EMBEDDED="embedded",INAPP="inapp",BRANDS="brands",FORMFACTORS="formFactors",FULLVERLIST="fullVersionList",PLATFORM="platform",PLATFORMVER="platformVersion",BITNESS="bitness",CH_HEADER="sec-ch-ua",CH_HEADER_FULL_VER_LIST=CH_HEADER+"-full-version-list",CH_HEADER_ARCH=CH_HEADER+"-arch",CH_HEADER_BITNESS=CH_HEADER+"-"+BITNESS,CH_HEADER_FORM_FACTORS=CH_HEADER+"-form-factors",CH_HEADER_MOBILE=CH_HEADER+"-"+MOBILE,CH_HEADER_MODEL=CH_HEADER+"-"+MODEL,CH_HEADER_PLATFORM=CH_HEADER+"-"+PLATFORM,CH_HEADER_PLATFORM_VER=CH_HEADER_PLATFORM+"-version",CH_ALL_VALUES=[BRANDS,FULLVERLIST,MOBILE,MODEL,PLATFORM,PLATFORMVER,ARCHITECTURE,FORMFACTORS,BITNESS],AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",GOOGLE="Google",HUAWEI="Huawei",LENOVO="Lenovo",HONOR="Honor",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",NVIDIA="Nvidia",ONEPLUS="OnePlus",OPPO="OPPO",SAMSUNG="Samsung",SHARP="Sharp",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",CHROME="Chrome",CHROMIUM="Chromium",CHROMECAST="Chromecast",EDGE="Edge",FIREFOX="Firefox",OPERA="Opera",FACEBOOK="Facebook",SOGOU="Sogou",PREFIX_MOBILE="Mobile ",SUFFIX_BROWSER=" Browser",WINDOWS="Windows";var isWindow=typeof window!==UNDEF_TYPE,NAVIGATOR=isWindow&&window.navigator?window.navigator:undefined,NAVIGATOR_UADATA=NAVIGATOR&&NAVIGATOR.userAgentData?NAVIGATOR.userAgentData:undefined;var extend=function(defaultRgx,extensions){var mergedRgx={};var extraRgx=extensions;if(!isExtensions(extensions)){extraRgx={};for(var i in extensions){for(var j in extensions[i]){extraRgx[j]=extensions[i][j].concat(extraRgx[j]?extraRgx[j]:[])}}}for(var k in defaultRgx){mergedRgx[k]=extraRgx[k]&&extraRgx[k].length%2===0?extraRgx[k].concat(defaultRgx[k]):defaultRgx[k]}return mergedRgx},enumerize=function(arr){var enums={};for(var i=0;i0){for(var i in str1){if(lowerize(str2)==lowerize(str1[i]))return true}return false}return isString(str1)?lowerize(str2)==lowerize(str1):false},isExtensions=function(obj,deep){for(var prop in obj){return/^(browser|cpu|device|engine|os)$/.test(prop)||(deep?isExtensions(obj[prop]):false)}},isString=function(val){return typeof val===STR_TYPE},itemListToArray=function(header){if(!header)return undefined;var arr=[];var tokens=strip(/\\?\"/g,header).split(",");for(var i=0;i-1){var token=trim(tokens[i]).split(";v=");arr[i]={brand:token[0],version:token[1]}}else{arr[i]=trim(tokens[i])}}return arr},lowerize=function(str){return isString(str)?str.toLowerCase():str},majorize=function(version){return isString(version)?strip(/[^\d\.]/g,version).split(".")[0]:undefined},setProps=function(arr){for(var i in arr){if(!arr.hasOwnProperty(i))continue;var propName=arr[i];if(typeof propName==OBJ_TYPE&&propName.length==2){this[propName[0]]=propName[1]}else{this[propName]=undefined}}return this},strip=function(pattern,str){return isString(str)?str.replace(pattern,EMPTY):str},stripQuotes=function(str){return strip(/\\?\"/g,str)},trim=function(str,len){if(isString(str)){str=strip(/^\s\s*/,str);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){if(!ua||!arrays)return;var i=0,j,k,p,q,matches,match;while(i0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length>=3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){if(q.length>3){this[q[0]]=match?q[1].apply(this,q.slice(2)):undefined}else{this[q[0]]=match?q[1].call(this,match,q[2]):undefined}}else{if(q.length==3){this[q[0]]=match?match.replace(q[1],q[2]):undefined}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}else if(q.length>4){this[q[0]]=match?q[3].apply(this,[match.replace(q[1],q[2])].concat(q.slice(4))):undefined}}}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j