function generateRandomString(length, ...modes) { // generateRandomString(99, 1, 2, 3, 4, 5) const modeCharacters = [ '0123456789', // Mode 1 'abcdefghijklmnopqrstuvwxyz', // Mode 2 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', // Mode 3 '!@#$%^&*()-_=+[]{}|;:\'",<.>/?`~\\', // Mode 4 ]; const unicodeCharacters = (() => { let result = ''; const characterList = '1234567890ABCDEF'; try { for (let i = 0; i < length; i++) { let chars = ''; for (let j = 0; j < 4; j++) { chars += characterList[Math.floor(Math.random() * characterList.length)]; } result += JSON.parse(`"\\u${chars}"`); } } catch (e) { console.error(e.stack); return ''; } return result; })(); modeCharacters.push(unicodeCharacters); let characters = ''; modes.forEach(mode => { if (mode >= 1 && mode <= 5) { characters += modeCharacters[mode - 1]; } }); if (characters.length === 0) { return ''; } let result = ''; const charactersLength = characters.length; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } module.exports = generateRandomString;