static mergeRecursive()

in firestore-counter/functions/lib/aggregator.js [79:97]


    static mergeRecursive(from, to, subtract) {
        for (let key in from) {
            if (typeof from[key] === "number") {
                if (key in to && typeof to[key] === "number") {
                    to[key] += subtract ? -from[key] : from[key];
                }
                else {
                    // Create a new node if doesn't exist or override if not a number.
                    to[key] = subtract ? -from[key] : from[key];
                }
            }
            else if (typeof from[key] === "object") {
                if (key in to === false || typeof to[key] !== "object") {
                    to[key] = {};
                }
                NumericUpdate.mergeRecursive(from[key], to[key], subtract);
            }
        }
    }