mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
Update build & test
This commit is contained in:
parent
f57f8fa1a7
commit
a9247154e0
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.pack.js
vendored
6
dist/ua-parser.pack.js
vendored
File diff suppressed because one or more lines are too long
@ -3,70 +3,131 @@
|
|||||||
// Source: /src/enums/ua-parser-enums.js
|
// Source: /src/enums/ua-parser-enums.js
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Enums for UAParser.js v2.0.0-alpha.3
|
/* Enums for UAParser.js v2.0.0-beta
|
||||||
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>
|
||||||
MIT License */
|
AGPLv3 License */
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
/*jshint esversion: 6 */
|
/*jshint esversion: 6 */
|
||||||
|
|
||||||
const BrowserName = Object.freeze({
|
const Browser = Object.freeze({
|
||||||
|
ANDROID: 'Android Browser',
|
||||||
|
BRAVE: 'Brave',
|
||||||
CHROME: 'Chrome',
|
CHROME: 'Chrome',
|
||||||
|
CHROMIUM: 'Chromium',
|
||||||
|
DOLPHIN: 'Dolphin',
|
||||||
|
DUCKDUCKGO: 'DuckDuckGo',
|
||||||
EDGE: 'Edge',
|
EDGE: 'Edge',
|
||||||
SAFARI : 'Safari',
|
|
||||||
FIREFOX: 'Firefox',
|
FIREFOX: 'Firefox',
|
||||||
OPERA : 'Opera',
|
FOCUS: 'Focus',
|
||||||
|
IE: 'IE',
|
||||||
|
KONQUEROR: 'Konqueror',
|
||||||
MOBILE_CHROME: 'Mobile Chrome',
|
MOBILE_CHROME: 'Mobile Chrome',
|
||||||
MOBILE_SAFARI : 'Mobile Safari',
|
|
||||||
MOBILE_FIREFOX: 'Mobile Firefox',
|
MOBILE_FIREFOX: 'Mobile Firefox',
|
||||||
ANDROID_BROWSER : 'Android Browser'
|
MOBILE_SAFARI: 'Mobile Safari',
|
||||||
|
OPERA: 'Opera',
|
||||||
|
PALEMOON: 'PaleMoon',
|
||||||
|
PUFFIN: 'Puffin',
|
||||||
|
QQ: 'QQ Browser',
|
||||||
|
SAFARI: 'Safari',
|
||||||
|
SAMSUNG: 'Samsung Internet',
|
||||||
|
UC: 'UC Browser',
|
||||||
|
VIVALDI: 'Vivaldi',
|
||||||
|
YANDEX: 'Yandex'
|
||||||
|
|
||||||
// TODO : test!
|
// TODO : test!
|
||||||
});
|
});
|
||||||
|
|
||||||
const CPUArch = Object.freeze({
|
const CPU = Object.freeze({
|
||||||
IA32 : 'ia32',
|
|
||||||
AMD64 : 'amd64',
|
|
||||||
IA64 : 'ia64',
|
|
||||||
ARM : 'arm',
|
ARM : 'arm',
|
||||||
ARM64: 'arm64',
|
ARM64: 'arm64',
|
||||||
ARMHF: 'armhf',
|
ARMHF: 'armhf',
|
||||||
_68K : '68k',
|
|
||||||
AVR: 'avr',
|
AVR: 'avr',
|
||||||
|
IA64: 'ia64',
|
||||||
IRIX: 'irix',
|
IRIX: 'irix',
|
||||||
IRIX64: 'irix64',
|
IRIX64: 'irix64',
|
||||||
MIPS: 'mips',
|
MIPS: 'mips',
|
||||||
MIPS64: 'mips64',
|
MIPS64: 'mips64',
|
||||||
|
MOTO_68K: '68k',
|
||||||
PPC: 'ppc',
|
PPC: 'ppc',
|
||||||
SPARC: 'sparc',
|
SPARC: 'sparc',
|
||||||
SPARC64 : 'sparc64'
|
SPARC64: 'sparc64',
|
||||||
|
X86: 'ia32',
|
||||||
|
X86_64: 'amd64'
|
||||||
});
|
});
|
||||||
|
|
||||||
const DeviceType = Object.freeze({
|
const Device = Object.freeze({
|
||||||
MOBILE : 'mobile',
|
|
||||||
TABLET : 'tablet',
|
|
||||||
SMARTTV : 'smarttv',
|
|
||||||
CONSOLE: 'console',
|
CONSOLE: 'console',
|
||||||
WEARABLE: 'wearable',
|
DEKSTOP: 'desktop',
|
||||||
EMBEDDED: 'embedded'
|
EMBEDDED: 'embedded',
|
||||||
|
MOBILE: 'mobile',
|
||||||
|
SMARTTV: 'smarttv',
|
||||||
|
TABLET: 'tablet',
|
||||||
|
WEARABLE: 'wearable'
|
||||||
});
|
});
|
||||||
|
|
||||||
const DeviceVendor = Object.freeze({
|
const Vendor = Object.freeze({
|
||||||
|
ACER: 'Acer',
|
||||||
|
ALCATEL: 'Alcatel',
|
||||||
APPLE: 'Apple',
|
APPLE: 'Apple',
|
||||||
SAMSUNG : 'Samsung',
|
AMAZON: 'Amazon',
|
||||||
|
ARCHOS: 'Archos',
|
||||||
|
ASUS: 'ASUS',
|
||||||
|
ATT: 'AT&T',
|
||||||
|
BENQ: 'BenQ',
|
||||||
|
BLACKBERRY: 'BlackBerry',
|
||||||
|
DELL: 'Dell',
|
||||||
|
ESSENTIAL: 'Essential',
|
||||||
|
FACEBOOK: 'Facebook',
|
||||||
|
FAIRPHONE: 'Fairphone',
|
||||||
|
GEEKSPHONE: 'GeeksPhone',
|
||||||
|
GENERIC: 'Generic',
|
||||||
|
GOOGLE: 'Google',
|
||||||
|
HP: 'HP',
|
||||||
|
HTC: 'HTC',
|
||||||
HUAWEI: 'Huawei',
|
HUAWEI: 'Huawei',
|
||||||
XIAOMI : 'Xiaomi',
|
INFINIX: 'Infinix',
|
||||||
OPPO : 'OPPO',
|
JOLLA: 'Jolla',
|
||||||
VIVO : 'Vivo',
|
KOBO: 'Kobo',
|
||||||
REALME : 'Realme',
|
|
||||||
LENOVO: 'Lenovo',
|
LENOVO: 'Lenovo',
|
||||||
LG : 'LG'
|
LG: 'LG',
|
||||||
|
MEIZU: 'Meizu',
|
||||||
|
MICROSOFT: 'Microsoft',
|
||||||
|
MOTOROLA: 'Motorola',
|
||||||
|
NEXIAN: 'Nexian',
|
||||||
|
NINTENDO: 'Nintendo',
|
||||||
|
NOKIA: 'Nokia',
|
||||||
|
NVIDIA: 'Nvidia',
|
||||||
|
ONEPLUS: 'OnePlus',
|
||||||
|
OPPO: 'OPPO',
|
||||||
|
OUYA: 'Ouya',
|
||||||
|
PALM: 'Palm',
|
||||||
|
PANASONIC: 'Panasonic',
|
||||||
|
PEBBLE: 'Pebble',
|
||||||
|
POLYTRON: 'Polytron',
|
||||||
|
REALME: 'Realme',
|
||||||
|
RIM: 'RIM',
|
||||||
|
ROKU: 'Roku',
|
||||||
|
SAMSUNG: 'Samsung',
|
||||||
|
SHARP: 'Sharp',
|
||||||
|
SIEMENS: 'Siemens',
|
||||||
|
SONY: 'Sony',
|
||||||
|
SPRINT: 'Sprint',
|
||||||
|
TECNO: 'Tecno',
|
||||||
|
TESLA: 'Tesla',
|
||||||
|
ULEFONE: 'Ulefone',
|
||||||
|
VIVO: 'Vivo',
|
||||||
|
VODAFONE: 'Vodafone',
|
||||||
|
XBOX: 'Xbox',
|
||||||
|
XIAOMI: 'Xiaomi',
|
||||||
|
ZEBRA: 'Zebra',
|
||||||
|
ZTE: 'ZTE',
|
||||||
|
|
||||||
// TODO : test!
|
// TODO : test!
|
||||||
});
|
});
|
||||||
|
|
||||||
const EngineName = Object.freeze({
|
const Engine = Object.freeze({
|
||||||
AMAYA: 'Amaya',
|
AMAYA: 'Amaya',
|
||||||
BLINK: 'Blink',
|
BLINK: 'Blink',
|
||||||
EDGEHTML: 'EdgeHTML',
|
EDGEHTML: 'EdgeHTML',
|
||||||
@ -74,8 +135,8 @@ const EngineName = Object.freeze({
|
|||||||
GECKO: 'Gecko',
|
GECKO: 'Gecko',
|
||||||
GOANNA: 'Goanna',
|
GOANNA: 'Goanna',
|
||||||
ICAB: 'iCab',
|
ICAB: 'iCab',
|
||||||
LIBWEB : 'LibWeb',
|
|
||||||
KHTML: 'KHTML',
|
KHTML: 'KHTML',
|
||||||
|
LIBWEB: 'LibWeb',
|
||||||
LINKS: 'Links',
|
LINKS: 'Links',
|
||||||
LYNX: 'Lynx',
|
LYNX: 'Lynx',
|
||||||
NETFRONT: 'NetFront',
|
NETFRONT: 'NetFront',
|
||||||
@ -87,21 +148,93 @@ const EngineName = Object.freeze({
|
|||||||
WEBKIT: 'WebKit'
|
WEBKIT: 'WebKit'
|
||||||
});
|
});
|
||||||
|
|
||||||
const OSName = Object.freeze({
|
const OS = Object.freeze({
|
||||||
WINDOWS : 'Windows',
|
AIX: 'AIX',
|
||||||
|
AMIGA_OS: 'Amiga OS',
|
||||||
|
ANDROID: 'Android',
|
||||||
|
ANDROID_X86: 'Android-x86',
|
||||||
|
ARCH: 'Arch',
|
||||||
|
BADA: 'Bada',
|
||||||
|
BEOS: 'BeOS',
|
||||||
|
BLACKBERRY: 'BlackBerry',
|
||||||
|
CENTOS: 'CentOS',
|
||||||
|
CHROME_OS: 'Chrome OS',
|
||||||
|
CONTIKI: 'Contiki',
|
||||||
|
FEDORA: 'Fedora',
|
||||||
|
FIREFOX_OS: 'Firefox OS',
|
||||||
|
FREEBSD: 'FreeBSD',
|
||||||
|
DEBIAN: 'Debian',
|
||||||
|
DEEPIN: 'Deepin',
|
||||||
|
DRAGONFLY: 'DragonFly',
|
||||||
|
ELEMENTARY_OS: 'elementary OS',
|
||||||
|
FUCHSIA: 'Fuchsia',
|
||||||
|
GENTOO: 'Gentoo',
|
||||||
|
GHOSTBSD: 'GhostBSD',
|
||||||
|
GNU: 'GNU',
|
||||||
|
HAIKU: 'Haiku',
|
||||||
|
HARMONYOS: 'HarmonyOS',
|
||||||
|
HP_UX: 'HP-UX',
|
||||||
|
HURD: 'Hurd',
|
||||||
|
IOS: 'iOS',
|
||||||
|
JOLI: 'Joli',
|
||||||
|
KAIOS: 'KaiOS',
|
||||||
|
LINPUS: 'Linpus',
|
||||||
|
LINSPIRE: 'Linspire',
|
||||||
LINUX: 'Linux',
|
LINUX: 'Linux',
|
||||||
MACOS: 'macOS',
|
MACOS: 'macOS',
|
||||||
IOS : 'iOS',
|
MAEMO: 'Maemo',
|
||||||
ANDROID : 'Android'
|
MAGEIA: 'Mageia',
|
||||||
|
MANDRIVA: 'Mandriva',
|
||||||
|
MANJARO: 'Manjaro',
|
||||||
|
MEEGO: 'MeeGo',
|
||||||
|
MINIX: 'Minix',
|
||||||
|
MINT: 'Mint',
|
||||||
|
MORPH_OS: 'Morph OS',
|
||||||
|
NETBSD: 'NetBSD',
|
||||||
|
NETRANGE: 'NetRange',
|
||||||
|
NETTV: 'NetTV',
|
||||||
|
NINTENDO: 'Nintendo',
|
||||||
|
OPENBSD: 'OpenBSD',
|
||||||
|
OPENVMS: 'OpenVMS',
|
||||||
|
OS2: 'OS/2',
|
||||||
|
PALM: 'Palm',
|
||||||
|
PC_BSD: 'PC-BSD',
|
||||||
|
PCLINUXOS: 'PCLinuxOS',
|
||||||
|
PLAN9: 'Plan9',
|
||||||
|
PLAYSTATION: 'PlayStation',
|
||||||
|
QNX: 'QNX',
|
||||||
|
RASPBIAN: 'Raspbian',
|
||||||
|
REDHAT: 'RedHat',
|
||||||
|
RIM_TABLET_OS: 'RIM Tablet OS',
|
||||||
|
RISC_OS: 'RISC OS',
|
||||||
|
SABAYON: 'Sabayon',
|
||||||
|
SAILFISH: 'Sailfish',
|
||||||
|
SERENITYOS: 'SerenityOS',
|
||||||
|
SERIES40: 'Series40',
|
||||||
|
SLACKWARE: 'Slackware',
|
||||||
|
SOLARIS: 'Solaris',
|
||||||
|
SUSE: 'SUSE',
|
||||||
|
SYMBIAN: 'Symbian',
|
||||||
|
TIZEN: 'Tizen',
|
||||||
|
UBUNTU: 'Ubuntu',
|
||||||
|
UNIX: 'Unix',
|
||||||
|
VECTORLINUX: 'VectorLinux',
|
||||||
|
VIERA: 'Viera',
|
||||||
|
WATCHOS: 'watchOS',
|
||||||
|
WEBOS: 'WebOS',
|
||||||
|
WINDOWS: 'Windows',
|
||||||
|
WINDOWS_MOBILE: 'Windows Mobile',
|
||||||
|
WINDOWS_PHONE: 'Windows Phone',
|
||||||
|
ZENWALK: 'Zenwalk'
|
||||||
|
|
||||||
// TODO : test!
|
// TODO : test!
|
||||||
});
|
});
|
||||||
|
|
||||||
export {
|
export {
|
||||||
BrowserName,
|
Browser,
|
||||||
CPUArch,
|
CPU,
|
||||||
DeviceType,
|
Device,
|
||||||
DeviceVendor,
|
Vendor,
|
||||||
EngineName,
|
Engine,
|
||||||
OSName
|
OS
|
||||||
};
|
};
|
@ -3,10 +3,10 @@
|
|||||||
// Source: /src/extensions/ua-parser-extensions.js
|
// Source: /src/extensions/ua-parser-extensions.js
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
/* Extensions for UAParser.js v2.0.0-alpha.3
|
/* Extensions for UAParser.js v2.0.0-beta
|
||||||
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>
|
||||||
MIT License */
|
AGPLv3 License */
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
/*jshint esversion: 6 */
|
/*jshint esversion: 6 */
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
/* UAParser.js v2.0.0-alpha.3
|
/* UAParser.js v2.0.0-beta
|
||||||
Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
|
Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
|
||||||
MIT 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.
|
||||||
Demo : https://faisalman.github.io/ua-parser-js
|
Demo : https://faisalman.github.io/ua-parser-js
|
||||||
@ -20,7 +20,7 @@
|
|||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
|
|
||||||
var LIBVERSION = '2.0.0-alpha.3',
|
var LIBVERSION = '2.0.0-beta',
|
||||||
EMPTY = '',
|
EMPTY = '',
|
||||||
UNKNOWN = '?',
|
UNKNOWN = '?',
|
||||||
FUNC_TYPE = 'function',
|
FUNC_TYPE = 'function',
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
// Source: /src/main/ua-parser.js
|
// Source: /src/main/ua-parser.js
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
/* UAParser.js v2.0.0-alpha.3
|
/* UAParser.js v2.0.0-beta
|
||||||
Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
|
Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
|
||||||
MIT 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.
|
||||||
Demo : https://faisalman.github.io/ua-parser-js
|
Demo : https://faisalman.github.io/ua-parser-js
|
||||||
@ -22,7 +22,7 @@
|
|||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
|
|
||||||
var LIBVERSION = '2.0.0-alpha.3',
|
var LIBVERSION = '2.0.0-beta',
|
||||||
EMPTY = '',
|
EMPTY = '',
|
||||||
UNKNOWN = '?',
|
UNKNOWN = '?',
|
||||||
FUNC_TYPE = 'function',
|
FUNC_TYPE = 'function',
|
||||||
@ -491,8 +491,10 @@
|
|||||||
/\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
/\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
||||||
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
|
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
|
||||||
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
|
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
|
||||||
|
/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|\))/i, // Xiaomi Redmi 'numeric' models
|
||||||
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
|
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
|
||||||
], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
|
], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
|
||||||
|
/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, // Redmi Pad
|
||||||
/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
|
/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
|
||||||
],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
|
],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
|
||||||
|
|
||||||
@ -507,7 +509,7 @@
|
|||||||
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Realme
|
// Realme
|
||||||
/\b(rmx[12]\d{3})(?: bui|;|\))/i
|
/\b(rmx[1-3]\d{3})(?: bui|;|\))/i
|
||||||
], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Motorola
|
// Motorola
|
||||||
@ -594,6 +596,10 @@
|
|||||||
/\bmz-([-\w]{2,})/i
|
/\bmz-([-\w]{2,})/i
|
||||||
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
|
// Ulefone
|
||||||
|
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
|
||||||
|
], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// MIXED
|
// MIXED
|
||||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
||||||
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
||||||
|
@ -4,7 +4,7 @@ const parseJS = require('@babel/parser').parse;
|
|||||||
const traverse = require('@babel/traverse').default;
|
const traverse = require('@babel/traverse').default;
|
||||||
const safe = require('safe-regex');
|
const safe = require('safe-regex');
|
||||||
const UAParser = require('ua-parser-js');
|
const UAParser = require('ua-parser-js');
|
||||||
const Ext = require('ua-parser-js/extensions');
|
const { Bots, CLIs, Emails, Modules } = require('ua-parser-js/extensions');
|
||||||
|
|
||||||
describe('Bots', () => {
|
describe('Bots', () => {
|
||||||
it('Can detect bots', () => {
|
it('Can detect bots', () => {
|
||||||
@ -21,7 +21,7 @@ describe('Bots', () => {
|
|||||||
const jsdom = 'Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/20.0.3';
|
const jsdom = 'Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/20.0.3';
|
||||||
const scrapy = 'Scrapy/1.5.0 (+https://scrapy.org)';
|
const scrapy = 'Scrapy/1.5.0 (+https://scrapy.org)';
|
||||||
|
|
||||||
const botParser = new UAParser(Ext.Bots);
|
const botParser = new UAParser(Bots);
|
||||||
assert.deepEqual(botParser.setUA(googleBot).getBrowser(), {name: "Googlebot-Video", version: "1.0", major: "1", type: "bot"});
|
assert.deepEqual(botParser.setUA(googleBot).getBrowser(), {name: "Googlebot-Video", version: "1.0", major: "1", type: "bot"});
|
||||||
assert.deepEqual(botParser.setUA(gptBot).getBrowser(), {name: "GPTBot", version: "1.0", major: "1", type: "bot"});
|
assert.deepEqual(botParser.setUA(gptBot).getBrowser(), {name: "GPTBot", version: "1.0", major: "1", type: "bot"});
|
||||||
assert.deepEqual(botParser.setUA(msnBot).getBrowser(), {name: "msnbot-media", version: "1.1", major: "1", type: "bot"});
|
assert.deepEqual(botParser.setUA(msnBot).getBrowser(), {name: "msnbot-media", version: "1.1", major: "1", type: "bot"});
|
||||||
@ -29,16 +29,16 @@ describe('Bots', () => {
|
|||||||
assert.deepEqual(botParser.setUA(opera).getBrowser(), {name: "Opera", version: "8.5", major: "8"});
|
assert.deepEqual(botParser.setUA(opera).getBrowser(), {name: "Opera", version: "8.5", major: "8"});
|
||||||
|
|
||||||
// try merging Bots & CLIs
|
// try merging Bots & CLIs
|
||||||
const botsAndCLIs = { browser : [...Ext.Bots.browser, ...Ext.CLIs.browser]};
|
const botsAndCLIs = { browser : [...Bots.browser, ...CLIs.browser]};
|
||||||
const botsAndCLIsParser = new UAParser(botsAndCLIs);
|
const botsAndCLIsParser = new UAParser(botsAndCLIs);
|
||||||
assert.deepEqual(botsAndCLIsParser.setUA(wget).getBrowser(), {name: "Wget", version: "1.21.1", major: "1", type:"cli"});
|
assert.deepEqual(botsAndCLIsParser.setUA(wget).getBrowser(), {name: "Wget", version: "1.21.1", major: "1", type:"cli"});
|
||||||
assert.deepEqual(botsAndCLIsParser.setUA(facebookBot).getBrowser(), {name: "FacebookBot", version: "1.0", major: "1", type:"bot"});
|
assert.deepEqual(botsAndCLIsParser.setUA(facebookBot).getBrowser(), {name: "FacebookBot", version: "1.0", major: "1", type:"bot"});
|
||||||
|
|
||||||
const emailParser = new UAParser(Ext.Emails);
|
const emailParser = new UAParser(Emails);
|
||||||
assert.deepEqual(emailParser.setUA(outlook).getBrowser(), {name: "Microsoft Outlook", version: "16.0.9126", major: "16", type: "email"});
|
assert.deepEqual(emailParser.setUA(outlook).getBrowser(), {name: "Microsoft Outlook", version: "16.0.9126", major: "16", type: "email"});
|
||||||
assert.deepEqual(emailParser.setUA(thunderbird).getBrowser(), {name: "Thunderbird", version: "78.13.0", major: "78", type: "email"});
|
assert.deepEqual(emailParser.setUA(thunderbird).getBrowser(), {name: "Thunderbird", version: "78.13.0", major: "78", type: "email"});
|
||||||
|
|
||||||
const moduleParser = new UAParser(Ext.Modules);
|
const moduleParser = new UAParser(Modules);
|
||||||
assert.deepEqual(moduleParser.setUA(axios).getBrowser(), {name: "axios", version: "1.3.5", major: "1", type: "module"});
|
assert.deepEqual(moduleParser.setUA(axios).getBrowser(), {name: "axios", version: "1.3.5", major: "1", type: "module"});
|
||||||
assert.deepEqual(moduleParser.setUA(jsdom).getBrowser(), {name: "jsdom", version: "20.0.3", major: "20", type: "module"});
|
assert.deepEqual(moduleParser.setUA(jsdom).getBrowser(), {name: "jsdom", version: "20.0.3", major: "20", type: "module"});
|
||||||
assert.deepEqual(moduleParser.setUA(scrapy).getBrowser(), {name: "Scrapy", version: "1.5.0", major: "1", type: "module"});
|
assert.deepEqual(moduleParser.setUA(scrapy).getBrowser(), {name: "Scrapy", version: "1.5.0", major: "1", type: "module"});
|
||||||
|
@ -1338,6 +1338,16 @@
|
|||||||
"major" : "1"
|
"major" : "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Vivaldi on Mac",
|
||||||
|
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.88 Safari/537.36 Vivaldi/2.4.1488.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Vivaldi",
|
||||||
|
"version" : "2.4.1488.36",
|
||||||
|
"major" : "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Viera",
|
"desc" : "Viera",
|
||||||
"ua" : "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
|
"ua" : "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
|
||||||
@ -1428,6 +1438,16 @@
|
|||||||
"major" : "6"
|
"major" : "6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Puffin",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 7.1.1; ZTE BLADE A0620 Build/NMF26F; ru-ru) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36 Puffin/9.2.0.50586AP",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Puffin",
|
||||||
|
"version" : "9.2.0.50586AP",
|
||||||
|
"major" : "9"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Microsoft Edge 0.1",
|
"desc" : "Microsoft Edge 0.1",
|
||||||
"ua" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0",
|
"ua" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0",
|
||||||
|
@ -167,6 +167,14 @@
|
|||||||
"architecture" : "arm64"
|
"architecture" : "arm64"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Google Search App",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 6.0; M5s Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.147 Mobile Safari/537.36 GSA/12.40.17.23.arm64",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"architecture" : "arm64"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Pocket PC",
|
"desc" : "Pocket PC",
|
||||||
"ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1",
|
"ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1",
|
||||||
|
@ -152,6 +152,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "ASUS Zenfone 2 Laser",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 6.0.1; ASUS_Z00ED) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "ASUS",
|
||||||
|
"model": "Z00ED",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Acer Iconia A1-810",
|
"desc": "Acer Iconia A1-810",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36",
|
||||||
@ -971,6 +980,15 @@
|
|||||||
"type": "tablet"
|
"type": "tablet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Lenovo IdeaTab S6000",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 YaBrowser/18.11.1.1011.01 Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Lenovo",
|
||||||
|
"model": "IdeaTab S6000-H",
|
||||||
|
"type": "tablet"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "LG V40 ThinQ",
|
"desc": "LG V40 ThinQ",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LM-V405) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LM-V405) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
|
||||||
@ -1592,6 +1610,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "OPPO F5",
|
||||||
|
"ua": "ozilla/5.0 (Linux; Android 7.1.1; CPH1723) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "OPPO",
|
||||||
|
"model": "CPH1723",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Realme C1",
|
"desc": "Realme C1",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 8.1; RMX1811 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 8.1; RMX1811 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36",
|
||||||
@ -2330,6 +2357,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Tecno Spark 8C",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; TECNO KG5n) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "TECNO",
|
||||||
|
"model": "KG5n",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Tesla",
|
"desc": "Tesla",
|
||||||
"ua": "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
|
"ua": "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
|
||||||
@ -2699,6 +2735,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCOPHONE F1",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "POCOPHONE F1",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Xiaomi Redmi 4A",
|
"desc": "Xiaomi Redmi 4A",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
|
||||||
@ -2798,6 +2843,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "ZTE Blade A6",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 7.1.1; ZTE BLADE A0620 Build/NMF26F; ru-ru) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36 Puffin/9.2.0.50586AP",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "ZTE",
|
||||||
|
"model": "BLADE A0620",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "PlayStation 4",
|
"desc": "PlayStation 4",
|
||||||
"ua": "Mozilla/5.0 (PlayStation 4 3.00) AppleWebKit/537.73 (KHTML, like Gecko)",
|
"ua": "Mozilla/5.0 (PlayStation 4 3.00) AppleWebKit/537.73 (KHTML, like Gecko)",
|
||||||
@ -3104,6 +3158,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Google Pixel 7",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Google",
|
||||||
|
"model": "Pixel 7",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Generic Android Device",
|
"desc": "Generic Android Device",
|
||||||
"ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K)",
|
"ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K)",
|
||||||
@ -3334,6 +3397,15 @@
|
|||||||
"type": "console"
|
"type": "console"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Vivo S1 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; vivo 1920) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Vivo",
|
||||||
|
"model": "1920",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Vivo Y52s",
|
"desc": "Vivo Y52s",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0",
|
"ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user