ua-spy
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

ua-spy

NPM version Build status Test coverage License

A parser for user agent to simple js object

Features

  • default plenty rules, include APP, OS, DEVICE, SDK
  • support custom rules

How to use

Install

npm i ua-spy -S

Example

const { detectAll } = require('ua-spy')

const parse = detectAll()

const all = parse('Mozilla/5.0 (Linux; Android 5.1.1; vivo X6S A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044207 Mobile Safari/537.36 MicroMessenger/6.7.3.1340(0x26070332) NetType/4G Language/zh_CN Process/tools')
console.log('result is', all)
/*
{
  "os": {
    "name": "Android",
    "version": "5.1.1"
  },
  "app": {
    "name": "na",
    "version": "-"
  },
  "browser": {
    "name": "Chrome",
    "version": "57"
  },
  "device": {
    "name": "vivo",
    "version": "X6S"
  },
  "sdk": {
    "name": "na",
    "version": "-"
  }
}
*/

const patchParser = detectAll({
  osPatches: [
    ['MYOS', /\bMYOS ([\d.]+)/],
  ],
  appPatches: [
    ['TAOBAO', /\bTB\/([\d.]+)/]
  ],
  browserPatches: [
    ['UC', /\bMYUC ([\d._]+)/]
  ],
  devicePatches: [
    ['YEJIDEVICE', /\bYEJIDEVICE ?([\d.]+)/]
  ],
  sdkPatches: [
    // The first match is name, the second is version
    ['any', /\bTestName\(([\w_-]+)\/([\d.]+)/],
  ],
})

const MY_UA = 'MYOS 3.3.3 Mozilla/5.0 YEJIDEVICE 1.1.1 (iPhone; CPU iPhone OS 11_4 like Mac OS X) TB/1.1.1 MYUC 2.0  AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 TestName(tname_1-1/99.9)'
console.log('result is', patchParser(MY_UA))

/*
{
  "os": {
    "name": "MYOS",
    "version": "3.3.3"
  },
  "app": {
    "name": "TAOBAO",
    "version": "1.1.1"
  },
  "browser": {
    "name": "UC",
    "version": "2.0"
  },
  "device": {
    "name": "YEJIDEVICE",
    "version": "1.1.1"
  },
  "sdk": {
    "name": "tname_1-1",
    "version": "99.9"
  }
}
*/

License

MIT

Package Sidebar

Install

npm i ua-spy

Weekly Downloads

495

Version

2.0.0

License

MIT

Unpacked Size

18.3 kB

Total Files

7

Last publish

Collaborators

  • xiekw2010