diff --git a/index.d.ts b/index.d.ts index fe0f97af..bdeadde9 100644 --- a/index.d.ts +++ b/index.d.ts @@ -34,16 +34,16 @@ export default class DeviceDetector { setOsVersionTruncate(value: any): void; setClientVersionTruncate(value: any): void; - set deviceTrusted(arg: boolean); + set deviceTrusted(stage: boolean); get deviceTrusted(): boolean; - set deviceInfo(arg: boolean); + set deviceInfo(stage: boolean); get deviceInfo(): boolean; /** - * @param {boolean} arg - true use indexes, false not use indexes + * @param {boolean} stage - true use indexes, false not use indexes */ - set deviceIndexes(arg: boolean); + set deviceIndexes(stage: boolean); /** * @return {boolean} - true use indexes, false not use indexes diff --git a/index.js b/index.js index dba638e5..d7527da4 100755 --- a/index.js +++ b/index.js @@ -78,7 +78,7 @@ class DeviceDetector { /** * @param {DeviceDetectorOptions} options **/ - constructor(options) { + constructor(options = {}) { this.init(); this.skipBotDetection = attr(options, 'skipBotDetection', false); @@ -116,8 +116,8 @@ class DeviceDetector { this.addParseBot(BOT_PARSER, new BotParser()); } - set deviceTrusted(check) { - this.#deviceTrusted = check; + set deviceTrusted(stage) { + this.#deviceTrusted = stage; } get deviceTrusted() { @@ -166,10 +166,10 @@ class DeviceDetector { } /** - * @param {boolean} status - true use indexes, false not use indexes + * @param {boolean} stage - true use indexes, false not use indexes */ - set deviceIndexes(status) { - this.#deviceIndexes = status; + set deviceIndexes(stage) { + this.#deviceIndexes = stage; } /** @@ -626,7 +626,7 @@ class DeviceDetector { deviceType = DEVICE_TYPE.TV; } /** - * All devices that contain Andr0id in string are assumed to be a tv + * All devices that contain "Andr0id" in string are assumed to be a tv */ if (helper.hasAndroidTVFragment(userAgent)) { deviceType = DEVICE_TYPE.TV; @@ -695,6 +695,16 @@ class DeviceDetector { return aliasDevice.parse(userAgent); } + /** + * restore original userAgent from clientHints object + * @param {string} userAgent + * @param {ResultClientHints} clientHints + * @return {string} + */ + restoreUserAgentFromClientHints(userAgent, clientHints) { + return helper.restoreUserAgentFromClientHints(userAgent, clientHints) + } + /** * parse device * @param {string} userAgent @@ -714,7 +724,7 @@ class DeviceDetector { trusted: null }; - let ua = helper.restoreUserAgentFromClientHints(userAgent, clientHints); + const ua = this.restoreUserAgentFromClientHints(userAgent, clientHints); // skip all parse is client-hints useragent and model not exist if (!helper.hasDeviceModelByClientHints(clientHints) && helper.hasUserAgentClientHintsFragment(userAgent)) { return Object.assign({}, result); diff --git a/parser/client/browser-families.js b/parser/client/browser-families.js index 3581b4a8..37b9c3e8 100644 --- a/parser/client/browser-families.js +++ b/parser/client/browser-families.js @@ -41,11 +41,11 @@ module.exports = { ], 'Firefox': [ 'FF', 'BI', 'BF', 'BH', 'BN', 'C0', 'CU', 'EI', 'F1', - 'FB', 'FE', 'AX', 'FM', 'FR', 'FY', 'GZ', 'I4', 'IF', + 'FB', 'FE', 'AX', 'FM', 'FR', 'FY', 'I4', 'IF', '8P', 'IW', 'LH', 'LY', 'MB', 'MN', 'MO', 'MY', 'OA', 'OS', 'PI', 'PX', 'QA', 'S5', 'SX', 'TF', 'TO', 'WF', 'ZV', 'FP', 'AD', '2I', 'P9', 'KJ', 'WY', 'VK', 'W5', - '7C', 'N7', 'W7', '8P', + '7C', 'N7', 'W7', ], 'Internet Explorer': ['IE', 'CZ', 'BZ', 'IM', 'PS', '3A', '4A', 'RN'], 'Konqueror': ['KO'], diff --git a/parser/device/brand-short.js b/parser/device/brand-short.js index 6ef31737..450ec599 100755 --- a/parser/device/brand-short.js +++ b/parser/device/brand-short.js @@ -186,11 +186,13 @@ module.exports = { 'BT': 'Bitel', 'B7': 'Bitmore', 'ZB': 'Bittium', + 'BIE': 'Biegedy', 'BK': 'Bkav', '5B': 'Black Bear', 'BLK': 'Black Box', 'BF': 'Black Fox', 'BPC': 'Blackpcs', + 'BLT': 'Blackton', 'B2': 'Blackview', '2Y': 'b2m', 'BP': 'Blaupunkt', @@ -1611,6 +1613,7 @@ module.exports = { 'TX': 'TechniSat', 'TT': 'TechnoTrend', 'TTS': 'TECHNOSAT', + 'TM1': 'Temigereev', 'TP': 'TechPad', 'TPS': 'TPS', '9E': 'Techwood', diff --git a/parser/os-abstract-parser.js b/parser/os-abstract-parser.js index 6c7ac930..47db03d8 100755 --- a/parser/os-abstract-parser.js +++ b/parser/os-abstract-parser.js @@ -346,7 +346,7 @@ class OsAbstractParser extends ParserAbstract { if (this.getBaseRegExp('sparc64').test(userAgent)) { return 'SPARC64'; } - if (this.getBaseRegExp('64-?bit|WOW64|(?:Intel)?x64|WINDOWS_64|win64|.*amd64|x86_?64').test(userAgent)) { + if (this.getBaseRegExp('64-?bit|WOW64|(?:Intel)?x64|WINDOWS_64|win64|.*amd64|.*x86_?64').test(userAgent)) { return 'x64'; } if (this.getBaseRegExp('.+32bit|.+win32|(?:i[0-9]|x)86|i86pc').test(userAgent)) { diff --git a/regexes/client/browser_engine.yml b/regexes/client/browser_engine.yml index c771d029..63069f16 100644 --- a/regexes/client/browser_engine.yml +++ b/regexes/client/browser_engine.yml @@ -41,9 +41,6 @@ - regex: 'Servo' name: 'Servo' -- regex: 'Goanna' - name: 'Goanna' - - regex: 'Ekioh(?:Flow)?' name: 'EkiohFlow' diff --git a/regexes/client/libraries.yml b/regexes/client/libraries.yml index 292f264f..91954329 100644 --- a/regexes/client/libraries.yml +++ b/regexes/client/libraries.yml @@ -201,10 +201,6 @@ name: 'OkHttp' version: '$1' -- regex: 'HTTP_Request2(?:/(\d+[.\d]+))?' - name: 'HTTP_Request2' - version: '$1' - - regex: 'HTTP_Request2(?:/(\d+[.\d]+))?' name: 'HTTP_Request2' version: '$1' @@ -643,3 +639,13 @@ name: 'ICAP Client' version: '$1' url: 'https://github.com/Peoplecantfly/icapserver' + +- regex: 'Cygwin-Setup(?:/(\d+[.\d]+))?' + name: 'Cygwin' + version: '$1' + url: 'https://www.cygwin.com/' + +- regex: 'azsdk-python-storage-blob(?:/(\d+[.\d]+))?' + name: 'Azure Blob Storage' + version: '$1' + url: 'https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python' diff --git a/regexes/client/mediaplayers.yml b/regexes/client/mediaplayers.yml index 410b1885..3abb28c3 100644 --- a/regexes/client/mediaplayers.yml +++ b/regexes/client/mediaplayers.yml @@ -113,10 +113,6 @@ name: 'mpv' version: '$1' -- regex: 'foobar2000(?:/([\w\.]+))?' - name: 'foobar2000' - version: '$1' - - regex: 'HTC Streaming Player' name: 'HTC Streaming Player' version: '' diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 3832feb3..3106db24 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -20,7 +20,7 @@ Ace: model: 'Buzz 5 Pro+' - regex: 'BUZZ ([45]) ?Pro' model: 'Buzz $1 Pro' - - regex: 'BUZZ ([124]) ?Lite' + - regex: 'BUZZ ([1245]) ?Lite' model: 'Buzz $1 Lite' - regex: 'BUZZ ([123]) Plus' model: 'Buzz $1 Plus' @@ -4203,7 +4203,7 @@ Bluegood: # Blackview Blackview: - regex: 'Blackview|(BL8[08]00|BV([24-9]000|8[18]00|[468]900|(5[1589]|9[135689])00|6[12368]00|7100)(?:[ _](?:PRO))?|(? { } if (check && formatOutput === FORMAT_OUTPUT_STRING_RESTORE) { - console.log(detector.restoreUserAgentFromClientHints(useragent, clientHintData)); + console.log(ParserHelper.restoreUserAgentFromClientHints(useragent, clientHintData)); } if (check && formatOutput === FORMAT_OUTPUT_STRING_HEADER) {