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

browser-language

Package Overview
Dependencies
Maintainers
1
Versions
35
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

browser-language - npm Package Compare versions

Comparing version 1.0.12 to 1.1.0

5

History.md

@@ -0,1 +1,6 @@

v1.1.0 / 2014-07-25
==================
* Rewrite for multiple require
v1.0.12 / 2014-07-22

@@ -2,0 +7,0 @@ ==================

186

index.js

@@ -7,3 +7,3 @@ "use strict";

* @subpackage main
* @version 1.0.12
* @version 1.1.0
* @author hex7c0 <hex7c0@gmail.com>

@@ -17,3 +17,2 @@ * @copyright hex7c0 2014

*/
var my, LANG;
var all = {

@@ -125,2 +124,3 @@ 'ab': 'Abkhazian',

* @function set
* @param {Object} my - user option
* @param {Object} res - response to client

@@ -131,3 +131,3 @@ * @param {String} lang - string for cookie

*/
function set(res,lang,signed) {
function set(my,res,lang,signed) {

@@ -162,88 +162,2 @@ var opt = my;

/**
* detect language and (if accepted) build it. Store information on normal cookie
*
* @function normal
* @param {Object} req - client request
* @param {Object} res - response to client
* @param {next} [next] - continue routes
* @return
*/
function normal(req,res,next) {
var lang = LANG; // cache
var opt = my;
if (req.cookies == undefined) {
req.cookies = {};
/**
* @todo req.headers.cookie
*/
}
if (req.cookies[opt.cookie] == undefined) { // check
if (req.headers['accept-language']) {
// req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(';');
var optional = req.headers['accept-language']
.match(/([a-z]{2,2})/ig);
// remove duplicate
var language = optional.filter(function(elem,pos,self) {
return self.indexOf(elem.toLowerCase()) == pos;
})
for (var i = 0, ii = language.length; i < ii; i++) {
if (lang[language[i]]) {
req.cookies[opt.cookie] = set(res,language[i],false);
return end(next);
}
}
}
} else if (lang[req.cookies[opt.cookie]]) { // lookup
return end(next);
}
req.cookies[opt.cookie] = set(res,lang._default,false);
return end(next);
}
/**
* detect language and (if accepted) build it. Store information on signed cookie
*
* @function signed
* @param {Object} req - client request
* @param {Object} res - response to client
* @param {next} next - continue routes
* @return
*/
function signed(req,res,next) {
var lang = LANG; // cache
var opt = my;
if (req.signedCookies == undefined) {
req.signedCookies = {};
/**
* @todo req.headers.cookie
*/
}
if (req.signedCookies[opt.cookie] == undefined) { // check
if (req.headers['accept-language']) {
// req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(';');
var optional = req.headers['accept-language']
.match(/([a-z]{2,2})/ig);
// remove duplicate
var language = optional.filter(function(elem,pos,self) {
return self.indexOf(elem.toLowerCase()) == pos;
})
for (var i = 0, ii = language.length; i < ii; i++) {
if (lang[language[i]]) {
req.signedCookies[opt.cookie] = set(res,language[i],true);
return end(next);
}
}
}
} else if (lang[req.signedCookies[opt.cookie]]) { // lookup
return end(next);
}
req.signedCookies[opt.cookie] = set(res,lang._default,true);
return end(next);
}
/**
* setting options

@@ -261,3 +175,3 @@ *

var lang = options.dictionary || require(include).LANG;
my = {
var my = {
cookie: String(options.cookie || 'lang'),

@@ -281,7 +195,93 @@ domain: String(options.domain || ''),

process.env.lang = lang._default;
LANG = lang;
var LANG = lang;
// return
if (Boolean(options.signed)) {
return signed;
/**
* detect language and (if accepted) build it. Store information on signed cookie
*
* @function signed
* @param {Object} req - client request
* @param {Object} res - response to client
* @param {next} next - continue routes
* @return
*/
return function signed(req,res,next) {
var lang = LANG;
var opt = my;
if (req.signedCookies == undefined) {
req.signedCookies = {};
/**
* @todo req.headers.cookie
*/
}
if (req.signedCookies[opt.cookie] == undefined) { // check
if (req.headers['accept-language']) {
// req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(';');
var optional = req.headers['accept-language']
.match(/([a-z]{2,2})/ig);
// remove duplicate
var language = optional.filter(function(elem,pos,self) {
return self.indexOf(elem.toLowerCase()) == pos;
})
for (var i = 0, ii = language.length; i < ii; i++) {
if (lang[language[i]]) {
req.signedCookies[opt.cookie] = set(opt,res,
language[i],true);
return end(next);
}
}
}
} else if (lang[req.signedCookies[opt.cookie]]) { // lookup
return end(next);
}
req.signedCookies[opt.cookie] = set(opt,res,lang._default,true);
return end(next);
}
}
return normal;
/**
* detect language and (if accepted) build it. Store information on normal cookie
*
* @function normal
* @param {Object} req - client request
* @param {Object} res - response to client
* @param {next} [next] - continue routes
* @return
*/
return function normal(req,res,next) {
var lang = LANG;
var opt = my;
if (req.cookies == undefined) {
req.cookies = {};
/**
* @todo req.headers.cookie
*/
}
if (req.cookies[opt.cookie] == undefined) { // check
if (req.headers['accept-language']) {
// req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(';');
var optional = req.headers['accept-language']
.match(/([a-z]{2,2})/ig);
// remove duplicate
var language = optional.filter(function(elem,pos,self) {
return self.indexOf(elem.toLowerCase()) == pos;
})
for (var i = 0, ii = language.length; i < ii; i++) {
if (lang[language[i]]) {
req.cookies[opt.cookie] = set(opt,res,language[i],false);
return end(next);
}
}
}
} else if (lang[req.cookies[opt.cookie]]) { // lookup
return end(next);
}
req.cookies[opt.cookie] = set(opt,res,lang._default,false);
return end(next);
}
};
{
"name": "browser-language",
"version": "1.0.12",
"version": "1.1.0",
"description": "grab browser language and store on cookie",

@@ -5,0 +5,0 @@ "main": "index.js",

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