Source: apc-abstract/lib/string/underscorize.js

/**
 * Convert camel case to under score joined.
 * @function lib.string.underscorize
 * @param {string} value - String value to convert.
 * @returns {string} - Under score joined string.
 */
module.exports = function (value) {
    return value && value.replace(/([A-Z])/g, function ($1) {
        return "_" + $1.toLowerCase();
    })
        .replace(/^_/, '');

};