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.4 to 1.0.5

6

History.md

@@ -0,1 +1,7 @@

1.0.5 / 2014-06-06
==================
* Fix if statment
* Performance tips
1.0.4 / 2014-06-02

@@ -2,0 +8,0 @@ ==================

101

index.js

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

* @subpackage main
* @version 1.0.4
* @version 1.0.5
* @author hex7c0 <hex7c0@gmail.com>

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

*/
/**
* @global
*/
var my = {}, LANG = {}, languageAll = {

@@ -128,17 +125,18 @@ 'ab': 'Abkhazian',

* @param {Object} res - response to client
* @param {Object} opt - my configuration
* @param {String} lang - string for cookie
* @param {Boolean} signed - if cookie'll be signed
* @return
* @return {String}
*/
function set(res,lang,signed) {
function set(res,opt,lang,signed) {
res.cookie(my.cookie,lang,{
domain: my.domain,
path: my.path,
maxAge: my.age,
httpOnly: my.httpOnly,
secure: my.secure,
res.cookie(opt.cookie,lang,{
domain: opt.domain,
path: opt.path,
maxAge: opt.age,
httpOnly: opt.httpOnly,
secure: opt.secure,
signed: signed,
});
return;
return lang;
}

@@ -156,24 +154,25 @@ /**

var done = false;
var lang = LANG; // cache
if (req.cookies == undefined) {
req.cookies = {};
/**
* @todo req.headers.cookie
*/
}
if (req.headers['accept-language'] && req.cookies[my.cookie] == undefined) { // check
var languagesTyp = req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(';');
for (var i = 0, il = languagesTyp.length; i < il; i++) {
var language = languagesTyp[i].substring(0,2);
if (LANG[language]) {
set(res,language,false);
req.cookies[my.cookie] = language;
done = true;
break;
if (req.cookies[my.cookie] == undefined) { // check
if (req.headers['accept-language']) {
var languagesTyp = req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(
';');
for (var i = 0, il = languagesTyp.length; i < il; i++) {
var language = languagesTyp[i].substring(0,2);
if (lang[language]) {
req.cookies[my.cookie] = set(res,my,language,false);
return next();
}
}
}
} else if (LANG[req.cookies[my.cookie]]) { // lookup
done = true;
} else if (lang[req.cookies[my.cookie]]) { // lookup
return next();
}
if (done == false) { // reset
set(res,LANG._default,false);
req.cookies[my.cookie] = LANG._default;
}
req.cookies[my.cookie] = set(res,my,lang._default,false);
return next();

@@ -192,25 +191,25 @@ }

var done = false;
var lang = LANG; // cache
if (req.signedCookies == undefined) {
req.signedCookies = {};
/**
* @todo req.headers.cookie
*/
}
if (req.headers['accept-language'] && req.signedCookies[my.cookie] == undefined) {// check
var languagesTyp = req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(';');
for (var i = 0, il = languagesTyp.length; i < il; i++) {
var language = languagesTyp[i].substring(0,2);
if (LANG[language]) {
set(res,language,true);
req.signedCookies[my.cookie] = language;
done = true;
break;
if (req.signedCookies[my.cookie] == undefined) { // check
if (req.headers['accept-language']) {
var languagesTyp = req.headers['accept-language'].replace(/q=[0-9.]*[,]?/g,'').split(
';');
for (var i = 0, il = languagesTyp.length; i < il; i++) {
var language = languagesTyp[i].substring(0,2);
if (lang[language]) {
req.signedCookies[my.cookie] = set(res,my,language,true);
return next();
}
}
}
} else if (LANG[req.signedCookies[my.cookie]]) { // lookup
done = true;
} else if (lang[req.signedCookies[my.cookie]]) { // lookup
return next();
}
if (done == false) {// reset
set(res,LANG._default,true);
req.signedCookies[my.cookie] = LANG._default;
}
req.signedCookies[my.cookie] = set(res,my,lang._default,true);
return next();

@@ -224,5 +223,5 @@ }

* @param {Object} options: various options. check README.md
* @return {function}
* @return {Function}
*/
module.exports = function main(options) {
var main = module.exports = function(options) {

@@ -232,2 +231,3 @@ var include = __dirname + '/lib/dictionary.js';

var lang = options.dictionary || require(include).LANG;
my = {

@@ -237,3 +237,3 @@ cookie: String(options.cookie || 'lang'),

path: String(options.path || '/'),
age: parseInt(options.age) || 1000 * 3600 * 24 * 365,
age: Number(options.age) || 1000 * 3600 * 24 * 365,
httpOnly: Boolean(options.httpOnly),

@@ -248,2 +248,5 @@ secure: Boolean(options.secure),

}
/**
* @global
*/
process.env.lang = lang._default;

@@ -250,0 +253,0 @@ LANG = lang;

{
"name": "browser-language",
"version": "1.0.4",
"description": "grab browser language for expressjs",
"version": "1.0.5",
"description": "grab browser language and store on cookie",
"main": "index.js",

@@ -15,7 +15,7 @@ "repository": {

"name": "hex7c0",
"email": "0x7c0@gmail.com",
"email": "hex7c0@gmail.com",
"url": "http://hex7c0.tk/"
},
"dependencies": {},
"devDependencies":{
"devDependencies": {
"cookie-parser": "1.1.0",

@@ -30,4 +30,3 @@ "express": ">4.0.0"

"language",
"cookie",
"express"
"cookie"
],

@@ -34,0 +33,0 @@ "license": "GPLv3",

#browser-language [![Build Status](https://travis-ci.org/hex7c0/browser-language.svg?branch=master)](https://travis-ci.org/hex7c0/browser-language) [![NPM version](https://badge.fury.io/js/browser-language.svg)](http://badge.fury.io/js/browser-language)
grab browser language for [expressjs](http://expressjs.com/)
grab browser language and store on cookie

@@ -19,3 +19,3 @@ ## Installation

_Clear_ use inside expressjs project
_Normal_ use inside expressjs project
```js

@@ -60,11 +60,18 @@ var language = require('browser-language');

- `..` - **String** Set cookie with '..' value
- `domain` - **String** Domain of cookie
- `cookie` - **String** Name of cookie
- `path` - **String** Path of cookie
- `age` - **Integer** Age of cookie
- `httpOnly` - **Boolean** Flag for http only
- `secure` - **Boolean** Flag for using https
- `signed` - **Boolean** Will use the secret passed to cookieParser(secret) to sign the value
- `domain` - **String** Domain of cookie *(default "null")*
- `cookie` - **String** Name of cookie *(default "lang")*
- `path` - **String** Path of cookie *(default "/")*
- `age` - **Number** Age of cookie in millisecond *(default "1 year")*
- `httpOnly` - **Boolean** Flag for http only cookie *(default "false")*
- `secure` - **Boolean** Flag for using cookie over TLS/SSL *(default "false")*
- `signed` - **Boolean** Will use the secret passed to cookieParser(secret) to sign the value *(default "false")*
`dictionary` object with correct value to be added, otherwise using a default dictionary inside /lib/dictionary.js
`dictionary` object with correct value to be added, otherwise using a default dictionary inside ./lib/dictionary.js

@@ -71,0 +78,0 @@ #### Examples

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