Набор полезных функций для Node JS и JavaScript

Полезные функции на JS:

// Генерация случайного набора символов
StringRandom = function(len, base){
	if(len == undefined){
		len = 10;
	}
	if(base == undefined){
		base = 'abcdefghjkmnpqrstwxyz123456789';
	}
	var result = '';
	var max_position = base.length - 1;
	for(var i = 0; i < len; i++){
		var position = Math.floor(Math.random() * max_position);
		result += base.substring(position, position + 1);
	}
	return result;
}

// Случайное целое число от и до
GetRandomInt = function(min, max){
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

// Проверка E-mail на правильность заполнения
EmailConfirm = function($email){
	return email.match(/^([0-9a-zA-Z]+([\-\.\_]{0,1}[0-9a-zA-Z]+)*[\-\.\_]{0,1}@[0-9a-zA-ZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]+([\-\.\_]{0,1}[0-9a-zA-Z]+)*[\.][a-zA-ZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]{2,9})$/);
}

// Склонение числа (число, рубль, рубля, рублей)
// Зависимости: IntVal();
DeclinationOfNumber = function(n, f1, f2, f5) {
	n = Math.abs(IntVal(n)) % 100;
	if(n > 10 && n < 20){
		return f5;
	}
	n = n % 10;
	if(n > 1 && n < 5){
		return f2;
	}
	if(n == 1){
		return f1;
	}
	return f5;
}

// Текст в транслит
GetTranslit = function(nameVal){
	enToRu = {
		"а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ё":"jo","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sch","ъ":"","ы":"y","ь":"","э":"e","ю":"ju","я":"ja"," ":" ","і":"i","ї":"i","є":"e","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ё":"Jo","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sch","Ъ":"","Ы":"Y","Ь":"","Э":"E","Ю":"Ju","Я":"Ja","І":"I","Ї":"I","Є":"E","№":"n"
	},
	nameVal = nameVal.trim().split("");
	var string = new String(),
		len = nameVal.length;
	for(var i = 0; len > i; i++){
		if(enToRu[nameVal[i]] != undefined){
			string += enToRu[nameVal[i]];
		}else if(nameVal[i].match(/^[0-9a-zA-Z\-\ ]$/)){
			string += nameVal[i];
		}
	}
	string = string.trim();
	
	return string;
}

// Преобразовать значение в целое число
IntVal = function(mixedVar, base){
	var tmp;
	if(typeof(mixedVar) == 'string'){
		tmp = parseInt(mixedVar);
		if(isNaN(tmp)){
			return 0;
		}else{
			return tmp.toString(base || 10);
		}
	}else if(typeof(mixedVar) == 'number'){
		return Math.floor(mixedVar);
	}else{
		return 0;
	}
}

// Round как в PHP
PhpRound = function(num, dec) {
	var num_sign = num >= 0 ? 1 : -1;
	return parseFloat((Math.round((num * Math.pow(10, dec)) + (num_sign * 0.0001)) / Math.pow(10, dec)).toFixed(dec));
}

// Кодировать в Base64
Base64Encode = function(str) {
	return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
		function toSolidBytes(match, p1) {
			return String.fromCharCode('0x' + p1);
	}));
}

// Декодировать из Base64
Base64Decode = function(str) {
	return decodeURIComponent(atob(str).split('').map(function(c) {
		return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
	}).join(''));
}

// Формат вывода цифрового значения (аналог number_format в PHP)
NumberFormat = function(number, decimals, dec_point, thousands_sep) {
	var i, j, kw, kd, km;
	
	if (isNaN(decimals = Math.abs(decimals))) {
		decimals = 2;
	}
	
	if (dec_point == undefined) {
		dec_point = ',';
	}
	
	if (thousands_sep == undefined) {
		thousands_sep = '.';
	}
 
	i = parseInt(number = (+number || 0).toFixed(decimals)) + '';
 
	if ((j = i.length) > 3) {
		j = j % 3;
	} else {
		j = 0;
	}
 
	km = (j ? i.substr(0, j) + thousands_sep : '');
	kw = i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousands_sep);
	kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : '');
 
	return km + kw + kd;
}

 

Функции для работы с куки

function CookieGet(name) {
	let matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
	return matches ? decodeURIComponent(matches[1]) : undefined;
}

function CookieSet(name, value, options = {}) {
	options = {
		path: '/',
		// при необходимости можно добавить другие значения по умолчанию
		// expires - дата до которой действует куки (На один день: new Date(Date.now() + 86400e3).toUTCString())
		// max-age - сколько секунд будет действовать куки (На один час: 3600)
	};

	if (options.expires instanceof Date) {
		options.expires = options.expires.toUTCString();
	}

	let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);

	for (let optionKey in options) {
		updatedCookie += "; " + optionKey;
		let optionValue = options[optionKey];
		if (optionValue !== true) {
			updatedCookie += "=" + optionValue;
		}
	}

	document.cookie = updatedCookie;
}

function CookieDelete(name) {
	CookieSet(name, "", {
		'max-age': -1
	});
}