mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-12-31 19:39:08 +03:00
Alpha release of v2.0
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////
|
||||
/* Enums for UAParser.js v2.0
|
||||
/* Enums for UAParser.js v2.0.0-alpha.1
|
||||
https://github.com/faisalman/ua-parser-js
|
||||
Author: Faisal Salman <f@faisalman.com>
|
||||
MIT License */
|
||||
@@ -1,8 +1,9 @@
|
||||
// Generated ESM version of UAParser.js enums
|
||||
// Source file: /src/ua-parser-enum.js
|
||||
// DO NOT EDIT THIS FILE!
|
||||
// Source: /src/enum/ua-parser-enum.js
|
||||
|
||||
///////////////////////////////////////////////
|
||||
/* Enums for UAParser.js v2.0
|
||||
/* Enums for UAParser.js v2.0.0-alpha.1
|
||||
https://github.com/faisalman/ua-parser-js
|
||||
Author: Faisal Salman <f@faisalman.com>
|
||||
MIT License */
|
||||
@@ -71,6 +72,7 @@ const EngineName = Object.freeze({
|
||||
GECKO : 'Gecko',
|
||||
GOANNA : 'Goanna',
|
||||
ICAB : 'iCab',
|
||||
LIBWEB : 'LibWeb',
|
||||
KHTML : 'KHTML',
|
||||
LINKS : 'Links',
|
||||
LYNX : 'Lynx',
|
||||
@@ -1,11 +1,10 @@
|
||||
///////////////////////////////////////////////
|
||||
/* Extensions for UAParser.js v2.0
|
||||
/* Extensions for UAParser.js v2.0.0-alpha.1
|
||||
https://github.com/faisalman/ua-parser-js
|
||||
Author: Faisal Salman <f@faisalman.com>
|
||||
MIT License */
|
||||
//////////////////////////////////////////////
|
||||
|
||||
const UAParser = require('ua-parser-js');
|
||||
const MODEL = 'model';
|
||||
const NAME = 'name';
|
||||
const TYPE = 'type';
|
||||
124
src/extension/ua-parser-extension.mjs
Normal file
124
src/extension/ua-parser-extension.mjs
Normal file
@@ -0,0 +1,124 @@
|
||||
// Generated ESM version of UAParser.js extensions
|
||||
// DO NOT EDIT THIS FILE!
|
||||
// Source: /src/extension/ua-parser-extension.js
|
||||
|
||||
///////////////////////////////////////////////
|
||||
/* Extensions for UAParser.js v2.0.0-alpha.1
|
||||
https://github.com/faisalman/ua-parser-js
|
||||
Author: Faisal Salman <f@faisalman.com>
|
||||
MIT License */
|
||||
//////////////////////////////////////////////
|
||||
|
||||
const MODEL = 'model';
|
||||
const NAME = 'name';
|
||||
const TYPE = 'type';
|
||||
const VENDOR = 'vendor';
|
||||
const VERSION = 'version';
|
||||
const MOBILE = 'mobile';
|
||||
const TABLET = 'tablet';
|
||||
|
||||
const Bots = Object.freeze({
|
||||
browser : [
|
||||
// Googlebot / BingBot / MSNBot / FacebookBot
|
||||
[/((?:google|bing|msn|facebook)bot(?:\-[imagevdo]{5})?|bingpreview)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']]
|
||||
]
|
||||
});
|
||||
|
||||
const ExtraDevices = Object.freeze({
|
||||
device : [
|
||||
[
|
||||
/(nook)[\w ]+build\/(\w+)/i, // Nook
|
||||
/(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
|
||||
/(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
|
||||
/(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
|
||||
/(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
|
||||
/(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
|
||||
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/(u304aa)/i // AT&T
|
||||
], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
|
||||
|
||||
/\bsie-(\w*)/i // Siemens
|
||||
], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
|
||||
|
||||
/\b(rct\w+) b/i // RCA Tablets
|
||||
], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
|
||||
], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
|
||||
], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
|
||||
], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(tm\d{3}\w+) b/i
|
||||
], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(k88) b/i // ZTE K Series Tablet
|
||||
], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(nx\d{3}j) b/i // ZTE Nubia
|
||||
], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
|
||||
|
||||
/\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
|
||||
], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
|
||||
|
||||
/\b(zur\d{3}) b/i // Swiss ZUR Tablet
|
||||
], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
|
||||
|
||||
/\b((zeki)?tb.*\b) b/i // Zeki Tablets
|
||||
], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
|
||||
|
||||
/\b([yr]\d{2}) b/i,
|
||||
/\b(?:dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
|
||||
], [MODEL, [VENDOR, 'Dragon Touch'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(ns-?\w{0,9}) b/i // Insignia Tablets
|
||||
], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
|
||||
|
||||
/\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
|
||||
], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
|
||||
], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
|
||||
|
||||
/\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
|
||||
], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
|
||||
|
||||
/\b(ph-1) /i // Essential PH-1
|
||||
], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
|
||||
|
||||
/\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
|
||||
], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
|
||||
|
||||
/\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
|
||||
], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
|
||||
|
||||
/\btu_(1491) b/i // Rotor Tablets
|
||||
], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]
|
||||
]
|
||||
]
|
||||
});
|
||||
|
||||
const Emails = Object.freeze({
|
||||
browser : [
|
||||
// Microsoft Outlook / Thunderbird
|
||||
[/(microsoft outlook|thunderbird)[\s\/]([\w\.]+)/i], [NAME, VERSION, [TYPE, 'email']]
|
||||
]
|
||||
});
|
||||
|
||||
const Tools = Object.freeze({
|
||||
browser : [
|
||||
// wget / curl / lynx
|
||||
[/(wget|curl|lynx)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'tool']]
|
||||
]
|
||||
});
|
||||
|
||||
export {
|
||||
Bots,
|
||||
ExtraDevices,
|
||||
Emails,
|
||||
Tools
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
// Generated ESM version of UAParser.js extensions
|
||||
// DO NOT EDIT THIS FILE!
|
||||
// Source: /src/ua-parser-extension.js
|
||||
|
||||
///////////////////////////////////////////////
|
||||
/* Extensions for UAParser.js v2.0
|
||||
https://github.com/faisalman/ua-parser-js
|
||||
Author: Faisal Salman <f@faisalman.com>
|
||||
MIT License */
|
||||
//////////////////////////////////////////////
|
||||
|
||||
const UAParser = require("./ua-parser")
|
||||
|
||||
const Bots = Object.freeze({
|
||||
browser : [
|
||||
[/((?:google|bing|msn|facebook)bot(?:\-[imagevdo]{5})?|bingpreview)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, ['type', 'bot']]
|
||||
]
|
||||
});
|
||||
|
||||
const Emails = Object.freeze({
|
||||
browser : [
|
||||
[/(microsoft outlook|thunderbird)[\s\/]([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, ['type', 'email']]
|
||||
]
|
||||
});
|
||||
|
||||
const Tools = Object.freeze({
|
||||
browser : [
|
||||
[/(wget|curl|lynx)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, ['type', 'tool']]
|
||||
]
|
||||
});
|
||||
|
||||
export {
|
||||
Bots,
|
||||
Emails,
|
||||
Tools
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/* UAParser.js v1.1.34
|
||||
/* UAParser.js v2.0.0-alpha.1
|
||||
Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
|
||||
MIT License *//*
|
||||
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
||||
@@ -17,7 +17,7 @@
|
||||
/////////////
|
||||
|
||||
|
||||
var LIBVERSION = '1.1.34',
|
||||
var LIBVERSION = '2.0.0-alpha.1',
|
||||
EMPTY = '',
|
||||
UNKNOWN = '?',
|
||||
FUNC_TYPE = 'function',
|
||||
@@ -960,7 +960,6 @@
|
||||
return new UAParserItem(itemType, ua, rgxMap[itemType], uaCH).get();
|
||||
};
|
||||
this.set('ua', ua)
|
||||
.set('ua_ch', uaCH)
|
||||
.set(UA_BROWSER, createUAParserItem(UA_BROWSER))
|
||||
.set(UA_CPU, createUAParserItem(UA_CPU))
|
||||
.set(UA_DEVICE, createUAParserItem(UA_DEVICE))
|
||||
@@ -1029,7 +1028,6 @@
|
||||
return new UAParserItem(itemType, ua, rgxMap[itemType], uaCH).parseCH().get();
|
||||
};
|
||||
this.set('ua', ua)
|
||||
.set('ua_ch', uaCH)
|
||||
.set(UA_BROWSER, createUAParserItemWithCH(UA_BROWSER))
|
||||
.set(UA_CPU, createUAParserItemWithCH(UA_CPU))
|
||||
.set(UA_DEVICE, createUAParserItemWithCH(UA_DEVICE))
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
// Generated ESM version of UAParser.js
|
||||
// Source file: /src/ua-parser.js
|
||||
// DO NOT EDIT THIS FILE!
|
||||
// Source: /src/ua-parser.js
|
||||
|
||||
const window = undefined;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/* UAParser.js v1.1.34
|
||||
/* UAParser.js v2.0.0-alpha.1
|
||||
Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
|
||||
MIT License *//*
|
||||
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
||||
@@ -20,7 +21,7 @@ const window = undefined;
|
||||
/////////////
|
||||
|
||||
|
||||
var LIBVERSION = '1.1.34',
|
||||
var LIBVERSION = '2.0.0-alpha.1',
|
||||
EMPTY = '',
|
||||
UNKNOWN = '?',
|
||||
FUNC_TYPE = 'function',
|
||||
@@ -74,10 +75,8 @@ const window = undefined;
|
||||
SAMSUNG = 'Samsung',
|
||||
SHARP = 'Sharp',
|
||||
SONY = 'Sony',
|
||||
SWISS = 'Swiss',
|
||||
XIAOMI = 'Xiaomi',
|
||||
ZEBRA = 'Zebra',
|
||||
ZTE = 'ZTE',
|
||||
PREFIX_MOBILE = 'Mobile ',
|
||||
SUFFIX_BROWSER = ' Browser',
|
||||
CHROME = 'Chrome',
|
||||
@@ -269,10 +268,6 @@ const window = undefined;
|
||||
'8.1' : 'NT 6.3',
|
||||
'10' : ['NT 6.4', 'NT 10.0'],
|
||||
'RT' : 'ARM'
|
||||
},
|
||||
archEquivalenceMap = {
|
||||
'amd64' : ['x86-64', 'x64'],
|
||||
'ia32' : ['x86']
|
||||
};
|
||||
|
||||
//////////////
|
||||
@@ -368,6 +363,8 @@ const window = undefined;
|
||||
], [NAME, VERSION], [
|
||||
/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
|
||||
], [VERSION, [NAME, 'GSA']], [
|
||||
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
|
||||
], [VERSION, [NAME, 'TikTok']], [
|
||||
|
||||
/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
|
||||
], [VERSION, [NAME, CHROME+' Headless']], [
|
||||
@@ -610,62 +607,13 @@ const window = undefined;
|
||||
/(kobo)\s(ereader|touch)/i, // Kobo
|
||||
/(archos) (gamepad2?)/i, // Archos
|
||||
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
||||
/(kindle)\/([\w\.]+)/i, // Kindle
|
||||
/(nook)[\w ]+build\/(\w+)/i, // Nook
|
||||
/(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
|
||||
/(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
|
||||
/(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
|
||||
/(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
|
||||
/(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
|
||||
/(kindle)\/([\w\.]+)/i // Kindle
|
||||
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/(surface duo)/i // Surface Duo
|
||||
], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [
|
||||
/droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
|
||||
], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [
|
||||
/(u304aa)/i // AT&T
|
||||
], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
|
||||
/\bsie-(\w*)/i // Siemens
|
||||
], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
|
||||
/\b(rct\w+) b/i // RCA Tablets
|
||||
], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
|
||||
/\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
|
||||
], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
|
||||
/\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
|
||||
], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
|
||||
/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
|
||||
], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
|
||||
/\b(tm\d{3}\w+) b/i
|
||||
], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
|
||||
/\b(k88) b/i // ZTE K Series Tablet
|
||||
], [MODEL, [VENDOR, ZTE], [TYPE, TABLET]], [
|
||||
/\b(nx\d{3}j) b/i // ZTE Nubia
|
||||
], [MODEL, [VENDOR, ZTE], [TYPE, MOBILE]], [
|
||||
/\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
|
||||
], [MODEL, [VENDOR, SWISS], [TYPE, MOBILE]], [
|
||||
/\b(zur\d{3}) b/i // Swiss ZUR Tablet
|
||||
], [MODEL, [VENDOR, SWISS], [TYPE, TABLET]], [
|
||||
/\b((zeki)?tb.*\b) b/i // Zeki Tablets
|
||||
], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
|
||||
/\b([yr]\d{2}) b/i,
|
||||
/\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
|
||||
], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
|
||||
/\b(ns-?\w{0,9}) b/i // Insignia Tablets
|
||||
], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
|
||||
/\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
|
||||
], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
|
||||
/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
|
||||
], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
|
||||
/\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
|
||||
], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
|
||||
/\b(ph-1) /i // Essential PH-1
|
||||
], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
|
||||
/\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
|
||||
], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
|
||||
/\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
|
||||
], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
|
||||
/\btu_(1491) b/i // Rotor Tablets
|
||||
], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
|
||||
/(shield[\w ]+) b/i // Nvidia Shield Tablets
|
||||
], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [
|
||||
/(sprint) (\w+)/i // Sprint Phones
|
||||
@@ -774,7 +722,8 @@ const window = undefined;
|
||||
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
|
||||
/ekioh(flow)\/([\w\.]+)/i, // Flow
|
||||
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
|
||||
/(icab)[\/ ]([23]\.[\d\.]+)/i // iCab
|
||||
/(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
|
||||
/\b(libweb)/i
|
||||
], [NAME, VERSION], [
|
||||
|
||||
/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
|
||||
@@ -852,7 +801,7 @@ const window = undefined;
|
||||
], [[NAME, 'Solaris'], VERSION], [
|
||||
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
|
||||
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
|
||||
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX
|
||||
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
|
||||
/(unix) ?([\w\.]*)/i // UNIX
|
||||
], [NAME, VERSION]
|
||||
]
|
||||
@@ -1015,7 +964,6 @@ const window = undefined;
|
||||
return new UAParserItem(itemType, ua, rgxMap[itemType], uaCH).get();
|
||||
};
|
||||
this.set('ua', ua)
|
||||
.set('ua_ch', uaCH)
|
||||
.set(UA_BROWSER, createUAParserItem(UA_BROWSER))
|
||||
.set(UA_CPU, createUAParserItem(UA_CPU))
|
||||
.set(UA_DEVICE, createUAParserItem(UA_DEVICE))
|
||||
@@ -1084,7 +1032,6 @@ const window = undefined;
|
||||
return new UAParserItem(itemType, ua, rgxMap[itemType], uaCH).parseCH().get();
|
||||
};
|
||||
this.set('ua', ua)
|
||||
.set('ua_ch', uaCH)
|
||||
.set(UA_BROWSER, createUAParserItemWithCH(UA_BROWSER))
|
||||
.set(UA_CPU, createUAParserItemWithCH(UA_CPU))
|
||||
.set(UA_DEVICE, createUAParserItemWithCH(UA_DEVICE))
|
||||
|
||||
Reference in New Issue
Block a user