New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

negotiated

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

negotiated

A low-level, standards-compliant utility for parsing HTTP content negotiation headers

  • 1.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
80
increased by233.33%
Maintainers
1
Weekly downloads
 
Created
Source

negotiated Build Status

This is a low-level utility for correctly parsing the HTTP content negotiation headers. It doesn't interpret the parsed values in any way, except for ensuring that they are syntactically correct.

Installation

npm install --save negotiated

Usage

const negotiated = require('negotiated');

const best = Array.from(negotiated.languages('fr;q=0.4, ja-JP;q=0.2, de-DE;q=0.7, en;q=0.5'))
  .reduce((a, b) => a.weight >= b.weight ? a : b);

console.log(best.language); // => "de-de"

This package exports six functions:

  • mediaTypes(): parses the Accept header, emitting { type, params, weight, extensions }
  • charsets(): parses the Accept-Charset header, emitting { charset, weight }
  • encodings(): parses the Accept-Encoding header, emitting { encoding, weight }
  • languages(): parses the Accept-Language header, emitting { language, weight }
  • transferEncodings(): parses the TE header, emitting { encoding, params, weight }
  • parameters(): parses the params and extensions found above, emitting { key, value }

Each of the exported functions takes a string as the only argument. An iterator is returned, which parses one comma-separated item at a time. If the input string is invalid (according to RFC 7230 or RFC 7231), an error will be thrown mid-iteration.

Examples

Iterating over the Accept-Encoding header
const negotiated = require('negotiated');

for (const { encoding, weight } of negotiated.encodings('gzip;q=0.5, my-custom-encoding;q=1')) {
  if (weight > 0.8) console.log(`${encoding} is desired`);
}

// => "my-custom-encoding is desired"
Parsing media parameters
const negotiated = require('negotiated');

const [{ params }] = Array.from(negotiated.mediaTypes('application/json; CHARSET="utf-8"'));

console.log(Array.from(negotiated.parameters(params))); // => [{ key: 'charset', value: 'utf-8' }]

Keywords

FAQs

Package last updated on 31 Dec 2020

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