@karibash/password-generator
Version:
A simple password generation helper function.
46 lines (41 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib = require('tslib');
var alphabetLowercase = 'abcdefghijklmnopqrstuvwxyz';
var alphabetUppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var digits = '0123456789';
var sign = '-._~+/';
var choice = function (chars) {
return chars[Math.floor(Math.random() * chars.length)];
};
var shuffle = function (chars) {
return chars.split('').sort(function () { return 0.5 - Math.random(); }).join('');
};
var hash = function (size, charSet) {
if (size <= 0)
return '';
var chars = charSet
.map(function (chars) {
var count = Math.ceil(Math.random() * (size / charSet.length));
return tslib.__spreadArray([], Array(count), true).map(function () { return choice(chars); }).join('');
})
.join('');
return chars + hash(size - chars.length, charSet);
};
var password = function (size, charSet) {
if (charSet === void 0) { charSet = [
alphabetLowercase,
alphabetUppercase,
digits,
sign,
]; }
if (size < charSet.length)
console.warn('A value smaller than charSet.length is specified for the size argument.');
return shuffle(hash(size, charSet)).substr(0, size);
};
exports.alphabetLowercase = alphabetLowercase;
exports.alphabetUppercase = alphabetUppercase;
exports['default'] = password;
exports.digits = digits;
exports.sign = sign;
//# sourceMappingURL=index.cjs.js.map