index.js
function checkSecond(samasa, second) {
    var beg = u.first(second);
    var clean = second;
    if (!inc([c.h, c.S, c.oM], beg)) return second;
    var position = samasa.length - second.length;
    var sym = samasa[position];
    if (beg == c.h) {
        // return second;
        if (sym == c.h) return second;
        else if (sym == c.G) {
            return [c.G, u.wofirst(second)].join('');
        } else if (sym == c.D) {
            return [c.D, u.wofirst(second)].join('');
        }
    } else if (beg == c.S) {
        if (sym == c.S) return second;
        else if (sym == c.C) {
            return [c.C, u.wofirst(second)].join('');
        }
    } else if (beg == c.oM) {
        var om = samasa.substr(position-2, 2);
        if (om == 'ोङ') {
            return [om, c.virama, u.wofirst(second)].join('');
        }
    }
}
function checkSecond(samasa, second) {
    var beg = u.first(second);
    var clean = second;
    if (!inc([c.h, c.S, c.oM], beg)) return second;
    var position = samasa.length - second.length;
    var sym = samasa[position];
    if (beg == c.h) {
        // return second;
        if (sym == c.h) return second;
        else if (sym == c.G) {
            return [c.G, u.wofirst(second)].join('');
        } else if (sym == c.D) {
            return [c.D, u.wofirst(second)].join('');
        }
    } else if (beg == c.S) {
        if (sym == c.S) return second;
        else if (sym == c.C) {
            return [c.C, u.wofirst(second)].join('');
        }
    } else if (beg == c.oM) {
        var om = samasa.substr(position-2, 2);
        if (om == 'ोङ') {
            return [om, c.virama, u.wofirst(second)].join('');
        }
    }
}
если h,S - проверка: смотрим, нет-ли варианта G,C?, и, если есть, используем его для Om пригодится. А для c.S ?