Utility/random_string.js

const random_number = require('./random_number');
const is_number = require('../Assertion/is_number');

/**
 * Generate random string n characters long. If string length is not provided default string length will be 20.
 *
 * @memberof module:Utility
 * @param {Number} [length = 20] String length.
 * @returns {String} Generated string of n characters.
 * @since 0.1.0
 * @example
 * random_string(); // => BTe29*4_tPk90+mmSj%@
 * random_string(5); // => Fe9!o
 */
function random_string(length) {
    const _length = is_number(length) ? length : 20;
    const possibleCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@$%^*()-+_';
    let generatedString = '';
    const possibleCharactersCount = possibleCharacters.length - 1;
    let index = 0;

    for (index; index < _length; index++) {
        generatedString += possibleCharacters.charAt(random_number(possibleCharactersCount));
    }

    return generatedString;
}

module.exports = random_string;