diff --git a/src/enums/ua-parser-enums.js b/src/enums/ua-parser-enums.js index c070677..692fe0e 100644 --- a/src/enums/ua-parser-enums.js +++ b/src/enums/ua-parser-enums.js @@ -144,6 +144,14 @@ const Browser = Object.freeze({ // TODO : test! }); +const BrowserType = Object.freeze({ + BOT: 'bot', + CLI: 'cli', + EMAIL: 'email', + INAPP: 'inapp', + MODULE: 'module' +}); + const CPU = Object.freeze({ ARM : 'arm', ARM_64: 'arm64', @@ -341,7 +349,8 @@ const OS = Object.freeze({ }); module.exports = { - Browser, + Browser, + BrowserType, CPU, Device, Vendor, diff --git a/src/extensions/ua-parser-extensions.js b/src/extensions/ua-parser-extensions.js index 777d227..9d73878 100644 --- a/src/extensions/ua-parser-extensions.js +++ b/src/extensions/ua-parser-extensions.js @@ -15,12 +15,6 @@ const VERSION = 'version'; const MOBILE = 'mobile'; const TABLET = 'tablet'; -const Apps = Object.freeze({ - browser : [ - [/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, 'app']] - ] -}); - const Bots = Object.freeze({ browser : [ // 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({ browser : [[ @@ -238,11 +238,11 @@ const Modules = Object.freeze({ }); module.exports = { - Apps, Bots, CLIs, ExtraDevices, Emails, + InApps, MediaPlayers, Modules }; \ No newline at end of file diff --git a/src/main/ua-parser.d.ts b/src/main/ua-parser.d.ts index 6ccf867..b37c67c 100644 --- a/src/main/ua-parser.d.ts +++ b/src/main/ua-parser.d.ts @@ -62,6 +62,7 @@ declare namespace UAParser { NAME: 'name'; VERSION: 'version'; MAJOR: 'major'; + TYPE: 'type'; }; static readonly CPU: { ARCHITECTURE: 'architecture'; diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index 693ee88..2217759 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -847,7 +847,7 @@ var defaultProps = (function () { var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}}; setProps.call(props.init, [ - [UA_BROWSER, [NAME, VERSION, MAJOR]], + [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]], [UA_CPU, [ARCHITECTURE]], [UA_DEVICE, [TYPE, MODEL, VENDOR]], [UA_ENGINE, [NAME, VERSION]], @@ -1225,7 +1225,7 @@ } UAParser.VERSION = LIBVERSION; - UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]); + UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]); UAParser.CPU = enumerize([ARCHITECTURE]); UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]); UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]); diff --git a/test/dts-test.ts b/test/dts-test.ts index 6ede700..f181c6b 100644 --- a/test/dts-test.ts +++ b/test/dts-test.ts @@ -28,6 +28,7 @@ expectType(browser); expectType(browser.name); expectType(browser.version); expectType(browser.major); +expectType(browser.type); expectType(browser.is('')); expectType(browser.toString()); expectType>(browser.withClientHints()); diff --git a/test/mocha-test-es6.mjs b/test/mocha-test-es6.mjs index c0bd217..69a334e 100644 --- a/test/mocha-test-es6.mjs +++ b/test/mocha-test-es6.mjs @@ -7,8 +7,7 @@ describe('Returns', () => { assert.deepEqual(new UAParser('').getResult(), { 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 }, + browser: { name: undefined, version: undefined, major: undefined, type: undefined }, cpu: { architecture: undefined }, device: { vendor: undefined, model: undefined, type: undefined }, engine: { name: undefined, version: undefined}, diff --git a/test/mocha-test-extension.js b/test/mocha-test-extension.js index 45418ac..939802f 100644 --- a/test/mocha-test-extension.js +++ b/test/mocha-test-extension.js @@ -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(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(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 const botsAndCLIs = { browser : [...Bots.browser, ...CLIs.browser]}; diff --git a/test/mocha-test.js b/test/mocha-test.js index 2de9d87..184a847 100644 --- a/test/mocha-test.js +++ b/test/mocha-test.js @@ -10,6 +10,7 @@ var cpus = require('./specs/cpu-all.json'); var devices = require('./specs/device-all.json'); var engines = require('./specs/engine-all.json'); var os = require('./specs/os-all.json'); + var parser = new UAParser(); var methods = [ { @@ -82,7 +83,7 @@ describe('Returns', function () { assert.deepEqual(new UAParser('').getResult(), { ua : '', - browser: { name: undefined, version: undefined, major: undefined }, + browser: { name: undefined, version: undefined, major: undefined, type: undefined }, cpu: { architecture: undefined }, device: { vendor: undefined, model: undefined, type: undefined }, engine: { name: undefined, version: undefined},