mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
Add a new submodule: ua-parser-helpers
with a method: isFrozenUA()
to match a string with a frozen user-agent pattern
This commit is contained in:
parent
15d17e97a1
commit
072a82b87b
@ -157,6 +157,10 @@
|
|||||||
"./extensions": {
|
"./extensions": {
|
||||||
"require": "./src/extensions/ua-parser-extensions.js",
|
"require": "./src/extensions/ua-parser-extensions.js",
|
||||||
"import": "./src/extensions/ua-parser-extensions.mjs"
|
"import": "./src/extensions/ua-parser-extensions.mjs"
|
||||||
|
},
|
||||||
|
"./helpers": {
|
||||||
|
"require": "./src/helpers/ua-parser-helpers.js",
|
||||||
|
"import": "./src/helpers/ua-parser-helpers.mjs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
|
@ -16,6 +16,11 @@ const PATH = {
|
|||||||
src : 'src/extensions/ua-parser-extensions.js',
|
src : 'src/extensions/ua-parser-extensions.js',
|
||||||
dest : 'src/extensions/ua-parser-extensions.mjs',
|
dest : 'src/extensions/ua-parser-extensions.mjs',
|
||||||
title : 'extensions'
|
title : 'extensions'
|
||||||
|
},
|
||||||
|
helpers : {
|
||||||
|
src : 'src/helpers/ua-parser-helpers.js',
|
||||||
|
dest : 'src/helpers/ua-parser-helpers.mjs',
|
||||||
|
title : 'helpers'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const generateMJS = (module, replacers) => {
|
const generateMJS = (module, replacers) => {
|
||||||
@ -46,4 +51,7 @@ generateMJS('main', [
|
|||||||
generateMJS('enums', [[/module\.exports =/ig, 'export']]);
|
generateMJS('enums', [[/module\.exports =/ig, 'export']]);
|
||||||
|
|
||||||
// ua-parser-extension.mjs
|
// ua-parser-extension.mjs
|
||||||
generateMJS('extensions', [[/module\.exports =/ig, 'export']]);
|
generateMJS('extensions', [[/module\.exports =/ig, 'export']]);
|
||||||
|
|
||||||
|
// ua-parser-helpers.mjs
|
||||||
|
generateMJS('helpers', [[/module\.exports =/ig, 'export']]);
|
42
src/helpers/ua-parser-helpers.js
Normal file
42
src/helpers/ua-parser-helpers.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
///////////////////////////////////////////////
|
||||||
|
/* Helpers for UAParser.js v2.0.0-alpha.2
|
||||||
|
https://github.com/faisalman/ua-parser-js
|
||||||
|
Author: Faisal Salman <f@faisalman.com>
|
||||||
|
MIT License */
|
||||||
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*jshint esversion: 6 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
# Reference:
|
||||||
|
https://www.chromium.org/updates/ua-reduction/
|
||||||
|
|
||||||
|
# Desktop
|
||||||
|
---
|
||||||
|
Format:
|
||||||
|
Mozilla/5.0 (<unifiedPlatform>) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.0.0.0 Safari/537.36
|
||||||
|
|
||||||
|
Possible <unifiedPlatform> values:
|
||||||
|
- Windows NT 10.0; Win64; x64
|
||||||
|
- Macintosh; Intel Mac OS X 10_15_7
|
||||||
|
- X11; Linux x86_64
|
||||||
|
- X11; CrOS x86_64 14541.0.0
|
||||||
|
- Fuchsia
|
||||||
|
|
||||||
|
# Mobile & Tablet: (except iOS/Android WebView)
|
||||||
|
---
|
||||||
|
Format:
|
||||||
|
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.0.0.0 <deviceCompat> Safari/537.36
|
||||||
|
|
||||||
|
Possible <deviceCompat> values:
|
||||||
|
- "Mobile"
|
||||||
|
- "" (empty string for Tablets & Desktop)
|
||||||
|
*/
|
||||||
|
|
||||||
|
const frozenUA = /Mozilla\/5\.0 \((Windows NT 10\.0; Win64; x64|Macintosh; Intel Mac OS X 10_15_7|X11; Linux x86_64|X11; CrOS x86_64 14541\.0\.0|Fuchsia|Linux; Android 10; K)\) AppleWebKit\/537\.36 \(KHTML, like Gecko\) Chrome\/\d+\.0\.0\.0 (Mobile )?Safari\/537\.36/;
|
||||||
|
|
||||||
|
const isFrozenUA = str => frozenUA.test(str);
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
isFrozenUA
|
||||||
|
};
|
35
test/mocha-test-helpers.js
Normal file
35
test/mocha-test-helpers.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
const { isFrozenUA } = require('ua-parser-js/helpers');
|
||||||
|
const assert = require('assert');
|
||||||
|
|
||||||
|
describe('isFrozenUA', () => {
|
||||||
|
it('Returns whether a user agent is frozen', () => {
|
||||||
|
|
||||||
|
const regularWindowsUA = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36";
|
||||||
|
const freezedWindowsUA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36";
|
||||||
|
|
||||||
|
const regularMacUA = "";
|
||||||
|
const freezedMacUA = "";
|
||||||
|
|
||||||
|
const regularLinuxUA = "";
|
||||||
|
const freezedLinuxUA = "";
|
||||||
|
|
||||||
|
const regularCrOSUA = "";
|
||||||
|
const freezedCrOSUA = "";
|
||||||
|
|
||||||
|
const regularFuchsiaUA = "";
|
||||||
|
const freezedFuchsiaUA = "";
|
||||||
|
|
||||||
|
const regularMobileUA = "Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Mobile Safari/537.36";
|
||||||
|
const freezedMobileUA = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36";
|
||||||
|
|
||||||
|
const regularTabletUA = "Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36";
|
||||||
|
const freezedTabletUA = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36";
|
||||||
|
|
||||||
|
assert.strictEqual(isFrozenUA(regularWindowsUA), false);
|
||||||
|
assert.strictEqual(isFrozenUA(freezedWindowsUA), true);
|
||||||
|
assert.strictEqual(isFrozenUA(regularMobileUA), false);
|
||||||
|
assert.strictEqual(isFrozenUA(freezedMobileUA), true);
|
||||||
|
assert.strictEqual(isFrozenUA(regularTabletUA), false);
|
||||||
|
assert.strictEqual(isFrozenUA(freezedTabletUA), true);
|
||||||
|
});
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user