JS Regex para que coincida con todas las llaves (incluidas las llaves anidadas): "{Quiero esto {y esto} y esto en una cadena}"

Lo que significa que simplemente quiero desnudar las llaves. Puedo relacionar "{este tipo de cosas}" con:

"{stuff}".match(/{([^}]*)}/)[1]

¿Estoy pidiendo demasiado aquí?

Otro ejemplo, tengo este código javascript como cadena:

{
    var foo = {
        bar: 1    
    };

    var foo2 = {
        bar: 2    
    };
}

Quiero desnudar solo los tirantes exteriores:

var foo = {
    bar: 1
};

var foo2 = {
    bar: 2
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta