UNPKG

733 BJavaScriptView Raw
1"use strict";
2
3/**
4 * generate strong password
5 * @param {number} [length=10] length of password to generate
6 * @return {string}
7 */
8function generate(length = 10)
9{
10 const groups = [
11 '0123456789',
12 'abcdefghijklmnopqrstuvwxyz',
13 'ABCDEFGJIJKLMNOPQRSTUVWXYZ',
14 '!@$%^*_'
15 ];
16
17 let availableOrder = [0, 1, 2, 3];
18 let order = [];
19
20 while (availableOrder.length > 0)
21 {
22 order.push(availableOrder.splice(Math.floor(Math.random() * availableOrder.length), 1)[0]);
23 }
24
25 let password = '';
26
27 for (let i = 0; i < length; i++)
28 {
29 let currentGroup = groups[i % groups.length];
30
31 password += currentGroup[Math.floor(Math.random() * currentGroup.length)];
32 }
33
34 return password;
35}
36
37module.exports = generate;