¿Cómo escribirías una función de JavaScript que:
Toma una lista de objetos que se van a fusionar (profundamente) y genera un "objeto compuesto" cuyas claves/valores son el resultado de la fusión profunda de estos objetos.
Construye este "objeto compuesto" de tal manera que: si la clave/valores de los objetos originales se cambian después de crear el objeto compuesto, y se consulta al objeto compuesto por una clave/valor que depende de uno de los valores modificados, el objeto compuesto devolverá un resultado que refleja ese cambio (es decir, el valor se genera dinámicamente en función de los estados actuales de los objetos originales, y posiblemente también se memoriza)
Hay algunas bibliotecas como Lodash , deepmerge , object-accumulator , lazy-recursive-merge , Lazy.js que harán el #1 arriba, pero no conozco nada que pueda hacer el #2.
¿Cómo se escribe una función que hace tanto #1 como #2? ¿Se puede usar una de las bibliotecas anteriores como punto de partida para esto?