Socket
Socket
Sign inDemoInstall

device-detector

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

device-detector

Simple way to detect device info on Node.js and Browser


Version published
Weekly downloads
830
increased by4.8%
Maintainers
1
Weekly downloads
 
Created
Source

device-detector

Simple tool for detecting device info in Node.js and web browsers. Support almost popular browsers and bots.

NPM Travis

Contents

Setup

In Node.js:

npm install device-detector

And then:

    var DeviceDetector = require('device-detector');

In the browsers

Assuming there is a file device-detector.min.js located at "/public/js/lib/", the following ways can be used to include DeviceDetector:

Using SystemJS
    System.config({
        baseURL: '/public/js/lib',
        map: {
            DeviceDetector: 'device-detector.min'
        }
    });

    System.import('DeviceDetector').then(function(DeviceDetector){
        console.log(DeviceDetector.info);
    });

Using RequireJS
    require.config({
        baseUrl: '/public/js/lib',
        paths: {
            DeviceDetector: 'device-detector.min'
        }
    });

    requirejs('DeviceDetector', function(DeviceDetector){
        console.log(DeviceDetector.info);
    });

Using traditional script tag
<script type="text/javascript" src="/public/js/lib/device-detector.min.js"></script>
<script type="text/javascript">
console.log(DeviceDetector.info);
</script>

Usage

DeviceDetector provides just one method named "parse".

DeviceDetector.parse([userAgent]);

The only parameter "userAgent" is optional in web browser, but required in Node.js environment.

For example:

var ua = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
var deviceInfo = DeviceDetector.parse(ua);

deviceInfo is an object looks like this:

  {
    type: 'Bot',
    browser: '',
    engine: 'Googlebot',
    version: '2.1',
    os: ''
  }

Another example, you can see how it will be used with ExpressJS and morgan to show shorter logs:

var express = require('express');
var morgan = require('morgan');
var DeviceDetector = require('device-detector');

var app = express();

morgan.token('navigator', function(req, res){
  var ua = req.headers['user-agent'];
  var d = DeviceDetector.parse(ua);
  if(d){
    if(d.type === 'Bot'){
      return d.engine + ' ' + d.version;
    }
    return (d.browser + ' ' + d.version) + ', ' + (d.os + ' ' + d.type);
  }
  return 'Unknown device';
});

app.use(morgan(':method :url :status - :res[content-length] bytes :response-time ms - :navigator - [:date[web]]'));

Logging result:

GET /bookings 200 - 23324 bytes 1380.019 ms - Chrome 45.0.2454.93, Linux Desktop - [Wed, 23 Sep 2015 12:54:11 GMT]
GET /notifications 200 - 1757 bytes 29.730 ms - Chrome 45.0.2454.93, Linux Desktop - [Wed, 23 Sep 2015 12:54:12 GMT]
GET /profile 200 - 33805 bytes 619.092 ms - Chrome 45.0.2454.93, Linux Desktop - [Wed, 23 Sep 2015 12:54:20 GMT]
...

In the browsers, this method automatically executes and its result - current browser info - is being set to DeviceDetector.info property.

Also, if you don't pass "userAgent" parameter while calling "parse" method, it will return DeviceDetector.info instead of parsing again.

Test with Mocha

git clone https://github.com/ndaidong/device-detector.git
cd device-detector
npm install
mocha

Make sure Mocha is already and check the specs under /test folder.

DeviceDetector test with Mocha

License

Apache License

Keywords

FAQs

Package last updated on 10 Dec 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc