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

locales-detector

Package Overview
Dependencies
Maintainers
1
Versions
82
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

locales-detector - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

CHANGELOG.md

137

dist/locales-detector.es.js

@@ -200,2 +200,30 @@ import queryString from 'query-string';

var toConsumableArray = function (arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
return arr2;
} else {
return Array.from(arr);
}
};
/**

@@ -375,2 +403,92 @@ * Transformer are used to change format of locale (eg. convert it to uppercase), create fallbacks or delete invalid items.

/**
* This transformer allows you to append default locale.
*/
var DefaultLocaleTransformer = function (_Transformer) {
inherits(DefaultLocaleTransformer, _Transformer);
/**
* Constructor.
*
* @param {string} defaultLocale - set default locale
*/
function DefaultLocaleTransformer(defaultLocale) {
classCallCheck(this, DefaultLocaleTransformer);
var _this = possibleConstructorReturn(this, (DefaultLocaleTransformer.__proto__ || Object.getPrototypeOf(DefaultLocaleTransformer)).call(this));
_this.defaultLocale = defaultLocale;
return _this;
}
/**
* Add default locale to end of array
*
* @param {Array<string>} locales - list of locales
* @returns {Array<string>} locales with default
*/
createClass(DefaultLocaleTransformer, [{
key: 'transform',
value: function transform(locales) {
return [].concat(toConsumableArray(locales.map(function (locale) {
var splitedLocale = locale.split('-');
return splitedLocale.map(function (value, index) {
var localeGenerator = [];
for (var i = 0; i <= index; i++) {
localeGenerator.push(splitedLocale[i]);
}
return localeGenerator.join('-');
}).reverse();
}).reduce(function (a, b) {
return a.concat(b);
}, [])), [this.defaultLocale]);
}
}]);
return DefaultLocaleTransformer;
}(Transformer);
/**
* This transformer allows you to filter locales
*/
var AllowOnlyTransformer = function (_Transformer) {
inherits(AllowOnlyTransformer, _Transformer);
/**
* Constructor.
*
* @param {Array<string>} allowedLocales - list of allowed locales
*/
function AllowOnlyTransformer(allowedLocales) {
classCallCheck(this, AllowOnlyTransformer);
var _this = possibleConstructorReturn(this, (AllowOnlyTransformer.__proto__ || Object.getPrototypeOf(AllowOnlyTransformer)).call(this));
_this.allowedLocales = allowedLocales;
return _this;
}
/**
* Return only allowed locales.
*
* @param {Array<string>} locales - list of locales
* @returns {Array<string>} allowed locales
*/
createClass(AllowOnlyTransformer, [{
key: 'transform',
value: function transform(locales) {
var _this2 = this;
return locales.filter(function (locale) {
return _this2.allowedLocales.indexOf(locale) >= 0;
});
}
}]);
return AllowOnlyTransformer;
}(Transformer);
/**
* Detector classes obtain list of user's locales. It can be from browser, url, cookies, storage, ... whatever you want

@@ -491,3 +609,8 @@ * Get locales method always return array of locales.

this.detectors = detectors;
this.locales = detectors.map(function (detector) {
return detector.getLocales();
}).reduce(function (a, b) {
return a.concat(b);
}, []);
this.transformers = transformers;

@@ -499,9 +622,7 @@ }

value: function getLocales() {
var locales = this.detectors.map(function (detector) {
return detector.getLocales();
}).reduce(function (a, b) {
return a.concat(b);
}, []);
var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
this.transformers.forEach(function (transformer) {
var locales = this.locales;
[].concat(toConsumableArray(this.transformers), toConsumableArray(transformers)).forEach(function (transformer) {
locales = transformer.transform(locales);

@@ -518,2 +639,2 @@ });

export { FallbacksTransformer, IETFTransformer, InvalidLocalesTransformer, LanguageOnlyTransformer, NavigatorDetector, UrlDetector, LocaleResolver };
export { FallbacksTransformer, IETFTransformer, InvalidLocalesTransformer, LanguageOnlyTransformer, DefaultLocaleTransformer, AllowOnlyTransformer, NavigatorDetector, UrlDetector, LocaleResolver };

@@ -206,2 +206,30 @@ (function (global, factory) {

var toConsumableArray = function (arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
return arr2;
} else {
return Array.from(arr);
}
};
/**

@@ -381,2 +409,92 @@ * Transformer are used to change format of locale (eg. convert it to uppercase), create fallbacks or delete invalid items.

/**
* This transformer allows you to append default locale.
*/
var DefaultLocaleTransformer = function (_Transformer) {
inherits(DefaultLocaleTransformer, _Transformer);
/**
* Constructor.
*
* @param {string} defaultLocale - set default locale
*/
function DefaultLocaleTransformer(defaultLocale) {
classCallCheck(this, DefaultLocaleTransformer);
var _this = possibleConstructorReturn(this, (DefaultLocaleTransformer.__proto__ || Object.getPrototypeOf(DefaultLocaleTransformer)).call(this));
_this.defaultLocale = defaultLocale;
return _this;
}
/**
* Add default locale to end of array
*
* @param {Array<string>} locales - list of locales
* @returns {Array<string>} locales with default
*/
createClass(DefaultLocaleTransformer, [{
key: 'transform',
value: function transform(locales) {
return [].concat(toConsumableArray(locales.map(function (locale) {
var splitedLocale = locale.split('-');
return splitedLocale.map(function (value, index) {
var localeGenerator = [];
for (var i = 0; i <= index; i++) {
localeGenerator.push(splitedLocale[i]);
}
return localeGenerator.join('-');
}).reverse();
}).reduce(function (a, b) {
return a.concat(b);
}, [])), [this.defaultLocale]);
}
}]);
return DefaultLocaleTransformer;
}(Transformer);
/**
* This transformer allows you to filter locales
*/
var AllowOnlyTransformer = function (_Transformer) {
inherits(AllowOnlyTransformer, _Transformer);
/**
* Constructor.
*
* @param {Array<string>} allowedLocales - list of allowed locales
*/
function AllowOnlyTransformer(allowedLocales) {
classCallCheck(this, AllowOnlyTransformer);
var _this = possibleConstructorReturn(this, (AllowOnlyTransformer.__proto__ || Object.getPrototypeOf(AllowOnlyTransformer)).call(this));
_this.allowedLocales = allowedLocales;
return _this;
}
/**
* Return only allowed locales.
*
* @param {Array<string>} locales - list of locales
* @returns {Array<string>} allowed locales
*/
createClass(AllowOnlyTransformer, [{
key: 'transform',
value: function transform(locales) {
var _this2 = this;
return locales.filter(function (locale) {
return _this2.allowedLocales.indexOf(locale) >= 0;
});
}
}]);
return AllowOnlyTransformer;
}(Transformer);
/**
* Detector classes obtain list of user's locales. It can be from browser, url, cookies, storage, ... whatever you want

@@ -497,3 +615,8 @@ * Get locales method always return array of locales.

this.detectors = detectors;
this.locales = detectors.map(function (detector) {
return detector.getLocales();
}).reduce(function (a, b) {
return a.concat(b);
}, []);
this.transformers = transformers;

@@ -505,9 +628,7 @@ }

value: function getLocales() {
var locales = this.detectors.map(function (detector) {
return detector.getLocales();
}).reduce(function (a, b) {
return a.concat(b);
}, []);
var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
this.transformers.forEach(function (transformer) {
var locales = this.locales;
[].concat(toConsumableArray(this.transformers), toConsumableArray(transformers)).forEach(function (transformer) {
locales = transformer.transform(locales);

@@ -528,2 +649,4 @@ });

exports.LanguageOnlyTransformer = LanguageOnlyTransformer;
exports.DefaultLocaleTransformer = DefaultLocaleTransformer;
exports.AllowOnlyTransformer = AllowOnlyTransformer;
exports.NavigatorDetector = NavigatorDetector;

@@ -530,0 +653,0 @@ exports.UrlDetector = UrlDetector;

2

dist/locales-detector.min.js

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

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("query-string")):"function"==typeof define&&define.amd?define(["exports","query-string"],e):e(t.LocalesDetector={},t.queryString)}(this,function(t,e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;!function(){function t(t){this.value=t}function e(e){function n(o,i){try{var a=e[o](i),u=a.value;u instanceof t?Promise.resolve(u.value).then(function(t){n("next",t)},function(t){n("throw",t)}):r(a.done?"return":"normal",a.value)}catch(t){r("throw",t)}}function r(t,e){switch(t){case"return":o.resolve({value:e,done:!0});break;case"throw":o.reject(e);break;default:o.resolve({value:e,done:!1})}(o=o.next)?n(o.key,o.arg):i=null}var o,i;this._invoke=function(t,e){return new Promise(function(r,a){var u={key:t,arg:e,resolve:r,reject:a,next:null};i?i=i.next=u:(o=i=u,n(t,e))})},"function"!=typeof e.return&&(this.return=void 0)}"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype.throw=function(t){return this._invoke("throw",t)},e.prototype.return=function(t){return this._invoke("return",t)}}();var n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)},a=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},u=function t(){n(this,t)},c=function(t){function e(){return n(this,e),a(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,u),r(e,[{key:"transform",value:function(t){return t.map(function(t){var e=t.split("-");return e.map(function(t,n){for(var r=[],o=0;o<=n;o++)r.push(e[o]);return r.join("-")}).reverse()}).reduce(function(t,e){return t.concat(e)},[])}}]),e}(),s=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"-";n(this,e);var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.localeSeparator=t,r}return i(e,u),r(e,[{key:"transform",value:function(t){var e=this;return t.map(function(t){return t.split(e.localeSeparator).map(function(t,e){return 1===e?t.toUpperCase():t.toLowerCase()}).join("-")})}}]),e}(),f={"es-XL":"es-419",hindi:"hi",indonesian:"id",english:"en"},l=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};n(this,e);var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.convertTable=o({},f,t),r}return i(e,u),r(e,[{key:"transform",value:function(t){var e=this;return t.map(function(t){return e.convertTable[t]||t})}}]),e}(),p=function(t){function e(){return n(this,e),a(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,u),r(e,[{key:"transform",value:function(t){return t.map(function(t){return t.split("-")[0]})}}]),e}(),h=function t(){n(this,t)},v=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator;n(this,e);var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.navigator=t,r}return i(e,h),r(e,[{key:"getLocales",value:function(){var t=this.navigator,e=t.languages,n=t.language,r=t.userLanguage;return Array.isArray(e)?e:n?[n]:r?[r]:[]}}]),e}(),y=function(t){function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.location;n(this,o);var r=a(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return r.location=e,r.parameter=t,r}return i(o,h),r(o,[{key:"getLocales",value:function(){var t=e.parse(this.location.search)[this.parameter]||null;return t?t.split(","):[]}}]),o}(),g=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];n(this,t),this.detectors=e,this.transformers=r}return r(t,[{key:"getLocales",value:function(){var t=this.detectors.map(function(t){return t.getLocales()}).reduce(function(t,e){return t.concat(e)},[]);return this.transformers.forEach(function(e){t=e.transform(t)}),t.filter(function(t,e,n){return n.indexOf(t)===e})}}]),t}();t.FallbacksTransformer=c,t.IETFTransformer=s,t.InvalidLocalesTransformer=l,t.LanguageOnlyTransformer=p,t.NavigatorDetector=v,t.UrlDetector=y,t.LocaleResolver=g,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("query-string")):"function"==typeof define&&define.amd?define(["exports","query-string"],e):e(t.LocalesDetector={},t.queryString)}(this,function(t,e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;!function(){function t(t){this.value=t}function e(e){function r(o,i){try{var a=e[o](i),u=a.value;u instanceof t?Promise.resolve(u.value).then(function(t){r("next",t)},function(t){r("throw",t)}):n(a.done?"return":"normal",a.value)}catch(t){n("throw",t)}}function n(t,e){switch(t){case"return":o.resolve({value:e,done:!0});break;case"throw":o.reject(e);break;default:o.resolve({value:e,done:!1})}(o=o.next)?r(o.key,o.arg):i=null}var o,i;this._invoke=function(t,e){return new Promise(function(n,a){var u={key:t,arg:e,resolve:n,reject:a,next:null};i?i=i.next=u:(o=i=u,r(t,e))})},"function"!=typeof e.return&&(this.return=void 0)}"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype.throw=function(t){return this._invoke("throw",t)},e.prototype.return=function(t){return this._invoke("return",t)}}();var r=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},i=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)},a=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},u=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)},c=function t(){r(this,t)},f=function(t){function e(){return r(this,e),a(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,c),n(e,[{key:"transform",value:function(t){return t.map(function(t){var e=t.split("-");return e.map(function(t,r){for(var n=[],o=0;o<=r;o++)n.push(e[o]);return n.join("-")}).reverse()}).reduce(function(t,e){return t.concat(e)},[])}}]),e}(),s=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"-";r(this,e);var n=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n.localeSeparator=t,n}return i(e,c),n(e,[{key:"transform",value:function(t){var e=this;return t.map(function(t){return t.split(e.localeSeparator).map(function(t,e){return 1===e?t.toUpperCase():t.toLowerCase()}).join("-")})}}]),e}(),l={"es-XL":"es-419",hindi:"hi",indonesian:"id",english:"en"},p=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e);var n=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n.convertTable=o({},l,t),n}return i(e,c),n(e,[{key:"transform",value:function(t){var e=this;return t.map(function(t){return e.convertTable[t]||t})}}]),e}(),h=function(t){function e(){return r(this,e),a(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,c),n(e,[{key:"transform",value:function(t){return t.map(function(t){return t.split("-")[0]})}}]),e}(),v=function(t){function e(t){r(this,e);var n=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n.defaultLocale=t,n}return i(e,c),n(e,[{key:"transform",value:function(t){return[].concat(u(t.map(function(t){var e=t.split("-");return e.map(function(t,r){for(var n=[],o=0;o<=r;o++)n.push(e[o]);return n.join("-")}).reverse()}).reduce(function(t,e){return t.concat(e)},[])),[this.defaultLocale])}}]),e}(),y=function(t){function e(t){r(this,e);var n=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n.allowedLocales=t,n}return i(e,c),n(e,[{key:"transform",value:function(t){var e=this;return t.filter(function(t){return e.allowedLocales.indexOf(t)>=0})}}]),e}(),g=function t(){r(this,t)},_=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator;r(this,e);var n=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n.navigator=t,n}return i(e,g),n(e,[{key:"getLocales",value:function(){var t=this.navigator,e=t.languages,r=t.language,n=t.userLanguage;return Array.isArray(e)?e:r?[r]:n?[n]:[]}}]),e}(),d=function(t){function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.location;r(this,o);var n=a(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.location=e,n.parameter=t,n}return i(o,g),n(o,[{key:"getLocales",value:function(){var t=e.parse(this.location.search)[this.parameter]||null;return t?t.split(","):[]}}]),o}(),m=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];r(this,t),this.locales=e.map(function(t){return t.getLocales()}).reduce(function(t,e){return t.concat(e)},[]),this.transformers=n}return n(t,[{key:"getLocales",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.locales;return[].concat(u(this.transformers),u(t)).forEach(function(t){e=t.transform(e)}),e.filter(function(t,e,r){return r.indexOf(t)===e})}}]),t}();t.FallbacksTransformer=f,t.IETFTransformer=s,t.InvalidLocalesTransformer=p,t.LanguageOnlyTransformer=h,t.DefaultLocaleTransformer=v,t.AllowOnlyTransformer=y,t.NavigatorDetector=_,t.UrlDetector=d,t.LocaleResolver=m,Object.defineProperty(t,"__esModule",{value:!0})});
{
"name": "locales-detector",
"version": "0.1.0",
"version": "0.2.0",
"description": "Tool for detecting locales of visitors and transform them.",

@@ -5,0 +5,0 @@ "keywords": [

// @flow
import queryString from 'query-string'
import queryString from 'query-string';
import Detector from './Detector';

@@ -4,0 +4,0 @@

// @flow
import { FallbacksTransformer, IETFTransformer, InvalidLocalesTransformer, LanguageOnlyTransformer } from './transformers/index';
import {
FallbacksTransformer,
IETFTransformer,
InvalidLocalesTransformer,
LanguageOnlyTransformer,
DefaultLocaleTransformer,
AllowOnlyTransformer,
} from './transformers/index';
import { NavigatorDetector, UrlDetector } from './detectors/index';

@@ -11,2 +18,4 @@ import LocaleResolver from './LocaleResolver';

LanguageOnlyTransformer,
DefaultLocaleTransformer,
AllowOnlyTransformer,
NavigatorDetector,

@@ -13,0 +22,0 @@ UrlDetector,

@@ -6,16 +6,20 @@ // @flow

class LocaleResolver {
detectors: Array<Detector>;
locales: Array<string>;
transformers: Array<Transformer>;
constructor(detectors: Array<Detector>, transformers: Array<Transformer> = []) {
this.detectors = detectors;
this.locales = detectors.map((detector) => {
return detector.getLocales();
}).reduce((a, b) => a.concat(b), []);
this.transformers = transformers;
}
getLocales(): Array<string> {
let locales = this.detectors.map((detector) => {
return detector.getLocales();
}).reduce((a, b) => a.concat(b), []);
getLocales(transformers: Array<Transformer> = []): Array<string> {
let locales = this.locales;
this.transformers.forEach((transformer) => {
[
...this.transformers,
...transformers,
].forEach((transformer) => {
locales = transformer.transform(locales);

@@ -22,0 +26,0 @@ });

@@ -5,3 +5,12 @@ import FallbacksTransformer from './FallbacksTransformer';

import LanguageOnlyTransformer from './LanguageOnlyTransformer';
import DefaultLocaleTransformer from './DefaultLocaleTransformer';
import AllowOnlyTransformer from './AllowOnlyTransformer';
export { FallbacksTransformer, IETFTransformer, InvalidLocalesTransformer, LanguageOnlyTransformer };
export {
FallbacksTransformer,
IETFTransformer,
InvalidLocalesTransformer,
LanguageOnlyTransformer,
DefaultLocaleTransformer,
AllowOnlyTransformer,
};
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