mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 16:08:47 +03:00
[extensions] Add new Vehicles: BMW
, Jeep Wagooner
This commit is contained in:
parent
a9b31c0f7b
commit
367eae4c85
@ -335,15 +335,20 @@ const Libraries = Object.freeze({
|
|||||||
|
|
||||||
const Vehicles = Object.freeze({
|
const Vehicles = Object.freeze({
|
||||||
device : [
|
device : [
|
||||||
[
|
[/aftlbt962e2/i], // BMW
|
||||||
/dilink.+(byd) auto/i, // BYD
|
[[VENDOR, 'BMW']],
|
||||||
], [VENDOR], [
|
|
||||||
|
|
||||||
/(rivian) (r1t)/i, // Rivian
|
[/dilink.+(byd) auto/i], // BYD
|
||||||
], [VENDOR, MODEL], [
|
[VENDOR],
|
||||||
|
|
||||||
/vcc.+netfront/i, // Volvo
|
[/aftlft962x3/i], // Jeep
|
||||||
], [[VENDOR, 'Volvo']]
|
[[VENDOR, 'Jeep'], [MODEL, 'Wagooner']],
|
||||||
|
|
||||||
|
[/(rivian) (r1t)/i], // Rivian
|
||||||
|
[VENDOR, MODEL],
|
||||||
|
|
||||||
|
[/vcc.+netfront/i], // Volvo
|
||||||
|
[[VENDOR, 'Volvo']]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
62
test/data/ua/extension/vehicle.json
Normal file
62
test/data/ua/extension/vehicle.json
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"desc" : "BMW",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 9; AFTLBT962E2) AppleWebKit/537.36 (KHTML, like Gecko) Silk/118.3.1 like Chrome/118.0.5993.155 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"vendor" : "BMW",
|
||||||
|
"model" : "undefined",
|
||||||
|
"type" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "BYD",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 10; DiLink3.0 For BYD AUTO Build/QKQ1.200816.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.186 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"vendor" : "BYD",
|
||||||
|
"model" : "undefined",
|
||||||
|
"type" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Jeep",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 9; AFTLFT962X3) AppleWebKit/537.36 (KHTML, like Gecko) Silk/124.5.2 like Chrome/124.0.6367.248 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"vendor" : "Jeep",
|
||||||
|
"model" : "Wagooner",
|
||||||
|
"type" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Rivian",
|
||||||
|
"ua" : "Dalvik/2.1.0 (Linux; U; Android 10; Rivian R1T Build/QQ3A.200605.002)",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"vendor" : "Rivian",
|
||||||
|
"model" : "R1T",
|
||||||
|
"type" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Tesla",
|
||||||
|
"ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/79.0.3945.130 Chrome/79.0.3945.130 Safari/537.36 Tesla/2020.36.16-3e9e4e8dd287",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"vendor" : "Tesla",
|
||||||
|
"model" : "undefined",
|
||||||
|
"type" : "embedded"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Volvo",
|
||||||
|
"ua" : "Mozilla/5.0 (VCC; 1.0; like Gecko) NetFront/4.2",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"vendor" : "Volvo",
|
||||||
|
"model" : "undefined",
|
||||||
|
"type" : "undefined"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -4,31 +4,33 @@ 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('../../src/main/ua-parser');
|
const { UAParser } = require('../../src/main/ua-parser');
|
||||||
const clis = require('../data/ua/extension/cli.json');
|
const { Bots, CLIs, Crawlers, Emails, Fetchers, InApps, Libraries, Vehicles } = require('../../src/extensions/ua-parser-extensions');
|
||||||
const crawlers = require('../data/ua/extension/crawler.json');
|
|
||||||
const emails = require('../data/ua/extension/email.json');
|
|
||||||
const fetchers = require('../data/ua/extension/fetcher.json');
|
|
||||||
const inapps = require('../data/ua/extension/inapp.json');
|
|
||||||
const libraries = require('../data/ua/extension/library.json');
|
|
||||||
const { Bots, CLIs, Crawlers, Emails, Fetchers, InApps, Libraries } = require('../../src/extensions/ua-parser-extensions');
|
|
||||||
|
|
||||||
describe('Extensions', () => {
|
describe('Extensions', () => {
|
||||||
[
|
[
|
||||||
['CLIs', clis, CLIs],
|
['CLIs', 'cli', CLIs],
|
||||||
['Crawlers', crawlers, Crawlers],
|
['Crawlers', 'crawler', Crawlers],
|
||||||
['Emails', emails, Emails],
|
['Emails', 'email', Emails],
|
||||||
['Fetchers', fetchers, Fetchers],
|
['Fetchers', 'fetcher', Fetchers],
|
||||||
['InApps', inapps, InApps],
|
['InApps', 'inapp', InApps],
|
||||||
['Libraries', libraries, Libraries]
|
['Libraries', 'library', Libraries],
|
||||||
|
['Vehicles', 'vehicle', Vehicles]
|
||||||
]
|
]
|
||||||
.forEach((list) => {
|
.forEach(([desc, path, ext]) => {
|
||||||
describe(list[0], () => {
|
const tests = require(`../data/ua/extension/${path}.json`);
|
||||||
list[1].forEach((agent) => {
|
describe(desc, () => {
|
||||||
it(`Can detect ${agent.desc}: "${agent.ua}"`, () => {
|
tests.forEach((test) => {
|
||||||
let browser = UAParser(agent.ua, list[2]).browser;
|
it(`Can detect ${test.desc}: "${test.ua}"`, () => {
|
||||||
assert.strictEqual(String(browser.name), agent.expect.name);
|
const { browser, device } = UAParser(test.ua, ext);
|
||||||
assert.strictEqual(String(browser.version), agent.expect.version);
|
if ('browser' in ext) {
|
||||||
assert.strictEqual(String(browser.type), agent.expect.type);
|
assert.strictEqual(String(browser.name), test.expect.name);
|
||||||
|
assert.strictEqual(String(browser.version), test.expect.version);
|
||||||
|
assert.strictEqual(String(browser.type), test.expect.type);
|
||||||
|
} else if ('device' in ext) {
|
||||||
|
assert.strictEqual(String(device.vendor), test.expect.vendor);
|
||||||
|
assert.strictEqual(String(device.model), test.expect.model);
|
||||||
|
assert.strictEqual(String(device.type), test.expect.type);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user