Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@bsnext/fastify-bowser

Package Overview
Dependencies
Maintainers
0
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bsnext/fastify-bowser

A plugin for Fastify that adds the 'request.useragent' property to get header 'user-agent' parsed data.

  • 1.2.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Fastify-Bowser

Build & Test Node.JS Supported Fastify Supported Install Size Dependencies License

The plugin adds the "request.useragent" property, which returns the parsed data.

Tested on Fastify v4.14+ and Node.JS v19+!
https://github.com/bsnext/fastify-bowser/actions/workflows/build_n_test.yml

Why "bowser", not "ua-parser-js" or other library? Bowser it's a zero-dependency package with MIT license, unlike "ua-parser-js" under AGPL-3.0. Both of these libraries are good, but on top of that, bowser is about x4 times more faster.

Why not those package? Under hood it have a "useragent" - library with 2 dependencies. One of that is "LRU-Cache". But without cache it have a performance less than both previously mentioned libraries. Also, this library excludes parsing of user-agent until you call this property in request.

Installing:

npm install @bsnext/fastify-bowser

Usage:

import FastifyBowser from '@bsnext/fastify-bowser'; // TS
import { default as FastifyBowser } from "@bsnext/fastify-bowser"; // MJS
const { default: FastifyBowser } = require(`@bsnext/fastify-bowser`); // CJS

const server = Fastify();
await server.register(FastifyBowser, {
	// Use parsed user-agent cache
	cache: boolean = false; 

 	// Cache limit. Will be automatically purged, if cache size reach limit.
	cacheLimit?: number = 100;

	// Automatically cache purge interval in seconds.
	// Disabled by default
	cachePurgeTime?: number;
});

Example

import Fastify from 'fastify'; 
import FastifyBowser from '@bsnext/fastify-bowser';

const server = Fastify(...);
await server.register(FastifyBowser, { cache: true });

server.get(`/test`, function(request, response) {
	response.send(request.useragent);

	/* {
		browser: { name: 'Chrome', version: '129.0.0.0' },
		os: { name: 'Windows', version: 'NT 10.0', versionName: '10' },
		platform: { type: 'desktop' },
		engine: { name: 'Blink' }
	} */
})

server.listen({ port: 8080 });

Keywords

FAQs

Package last updated on 19 Oct 2024

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