BREAKING CHANGE - Add new property to browser: type

This commit is contained in:
Faisal Salman 2024-06-02 23:04:25 +07:00
parent 1a22c6951f
commit 39590f112d
8 changed files with 25 additions and 14 deletions

View File

@ -144,6 +144,14 @@ const Browser = Object.freeze({
// TODO : test! // TODO : test!
}); });
const BrowserType = Object.freeze({
BOT: 'bot',
CLI: 'cli',
EMAIL: 'email',
INAPP: 'inapp',
MODULE: 'module'
});
const CPU = Object.freeze({ const CPU = Object.freeze({
ARM : 'arm', ARM : 'arm',
ARM_64: 'arm64', ARM_64: 'arm64',
@ -342,6 +350,7 @@ const OS = Object.freeze({
module.exports = { module.exports = {
Browser, Browser,
BrowserType,
CPU, CPU,
Device, Device,
Vendor, Vendor,

View File

@ -15,12 +15,6 @@ const VERSION = 'version';
const MOBILE = 'mobile'; const MOBILE = 'mobile';
const TABLET = 'tablet'; const TABLET = 'tablet';
const Apps = Object.freeze({
browser : [
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, 'app']]
]
});
const Bots = Object.freeze({ const Bots = Object.freeze({
browser : [ browser : [
// Googlebot / BingBot / MSNBot / FacebookBot // Googlebot / BingBot / MSNBot / FacebookBot
@ -124,6 +118,12 @@ const Emails = Object.freeze({
] ]
}); });
const InApps = Object.freeze({
browser : [
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, 'inapp']]
]
});
const MediaPlayers = Object.freeze({ const MediaPlayers = Object.freeze({
browser : [[ browser : [[
@ -238,11 +238,11 @@ const Modules = Object.freeze({
}); });
module.exports = { module.exports = {
Apps,
Bots, Bots,
CLIs, CLIs,
ExtraDevices, ExtraDevices,
Emails, Emails,
InApps,
MediaPlayers, MediaPlayers,
Modules Modules
}; };

View File

@ -62,6 +62,7 @@ declare namespace UAParser {
NAME: 'name'; NAME: 'name';
VERSION: 'version'; VERSION: 'version';
MAJOR: 'major'; MAJOR: 'major';
TYPE: 'type';
}; };
static readonly CPU: { static readonly CPU: {
ARCHITECTURE: 'architecture'; ARCHITECTURE: 'architecture';

View File

@ -847,7 +847,7 @@
var defaultProps = (function () { var defaultProps = (function () {
var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}}; var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};
setProps.call(props.init, [ setProps.call(props.init, [
[UA_BROWSER, [NAME, VERSION, MAJOR]], [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],
[UA_CPU, [ARCHITECTURE]], [UA_CPU, [ARCHITECTURE]],
[UA_DEVICE, [TYPE, MODEL, VENDOR]], [UA_DEVICE, [TYPE, MODEL, VENDOR]],
[UA_ENGINE, [NAME, VERSION]], [UA_ENGINE, [NAME, VERSION]],
@ -1225,7 +1225,7 @@
} }
UAParser.VERSION = LIBVERSION; UAParser.VERSION = LIBVERSION;
UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]); UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);
UAParser.CPU = enumerize([ARCHITECTURE]); UAParser.CPU = enumerize([ARCHITECTURE]);
UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]); UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]); UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);

View File

@ -28,6 +28,7 @@ expectType<IBrowser>(browser);
expectType<string | undefined>(browser.name); expectType<string | undefined>(browser.name);
expectType<string | undefined>(browser.version); expectType<string | undefined>(browser.version);
expectType<string | undefined>(browser.major); expectType<string | undefined>(browser.major);
expectType<string | undefined>(browser.type);
expectType<boolean>(browser.is('')); expectType<boolean>(browser.is(''));
expectType<string>(browser.toString()); expectType<string>(browser.toString());
expectType<IBrowser | PromiseLike<IBrowser>>(browser.withClientHints()); expectType<IBrowser | PromiseLike<IBrowser>>(browser.withClientHints());

View File

@ -7,8 +7,7 @@ describe('Returns', () => {
assert.deepEqual(new UAParser('').getResult(), assert.deepEqual(new UAParser('').getResult(),
{ {
ua : '', ua : '',
//ua_ch : { architecture: undefined, bitness: undefined, brands: undefined, fullVersionList: undefined, mobile: false, model: undefined, platform: undefined, platformVersion: undefined }, browser: { name: undefined, version: undefined, major: undefined, type: undefined },
browser: { name: undefined, version: undefined, major: undefined },
cpu: { architecture: undefined }, cpu: { architecture: undefined },
device: { vendor: undefined, model: undefined, type: undefined }, device: { vendor: undefined, model: undefined, type: undefined },
engine: { name: undefined, version: undefined}, engine: { name: undefined, version: undefined},

View File

@ -26,7 +26,7 @@ describe('Bots', () => {
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"});
assert.deepEqual(botParser.setUA(bingPreview).getBrowser(), {name: "BingPreview", version: "1.0b", major: "1", type: "bot"}); assert.deepEqual(botParser.setUA(bingPreview).getBrowser(), {name: "BingPreview", version: "1.0b", major: "1", type: "bot"});
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", type: undefined});
// try merging Bots & CLIs // try merging Bots & CLIs
const botsAndCLIs = { browser : [...Bots.browser, ...CLIs.browser]}; const botsAndCLIs = { browser : [...Bots.browser, ...CLIs.browser]};

View File

@ -10,6 +10,7 @@ var cpus = require('./specs/cpu-all.json');
var devices = require('./specs/device-all.json'); var devices = require('./specs/device-all.json');
var engines = require('./specs/engine-all.json'); var engines = require('./specs/engine-all.json');
var os = require('./specs/os-all.json'); var os = require('./specs/os-all.json');
var parser = new UAParser(); var parser = new UAParser();
var methods = [ var methods = [
{ {
@ -82,7 +83,7 @@ describe('Returns', function () {
assert.deepEqual(new UAParser('').getResult(), assert.deepEqual(new UAParser('').getResult(),
{ {
ua : '', ua : '',
browser: { name: undefined, version: undefined, major: undefined }, browser: { name: undefined, version: undefined, major: undefined, type: undefined },
cpu: { architecture: undefined }, cpu: { architecture: undefined },
device: { vendor: undefined, model: undefined, type: undefined }, device: { vendor: undefined, model: undefined, type: undefined },
engine: { name: undefined, version: undefined}, engine: { name: undefined, version: undefined},