UNPKG

fast-key-generator

Version:
66 lines (53 loc) 1.38 kB
/** * @format */ var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var numeric = "0123456789"; var symbols = "'[?>#](<%+.^_,\")!|;*`}/@~-&{=:$\\"; var alphanum = alpha.concat(numeric); var charsets = { alpha: alpha, alphanum: alphanum, numeric: numeric, symbols: symbols }; var transforms = { none: String.prototype.toString, lower: String.prototype.toLowerCase, upper: String.prototype.toUpperCase }; var initialOptions = { size: 16, prefix: "", exclude: [], chartype: "alpha", transform: "none", validate: function() { return true; } }; function generateKey(options) { var settings = Object.assign({}, initialOptions, options || {}); var key = ""; var charset = settings.charset ? settings.charset : charsets[settings.chartype]; var size = settings.size > 0 && isFinite(settings.size) ? parseInt(settings.size, 10) | 0 : 0; var transform = typeof settings.transform === "function" ? settings.transform : transforms[settings.transform]; while (size--) { key = charset.charAt((Math.random() * charset.length) | 0).concat(key); } key = settings.prefix.concat(transform.call(key, key) || ""); return !settings.validate(key) || settings.exclude.indexOf(key) !== -1 ? generateKey(settings) : key; } module.exports = { generateKey: generateKey };