private extend()

in GatewayPluginExample/Ux/gulps/gulp-merge-json-in-folders/json-merge.ts [106:134]


    private extend(dest: any, sources: any[]): any {
        if (!sources || sources.length === 0) {
            return dest;
        }

        for (let i = 0; i < sources.length; i++) {
            let src = sources[i];
            // Cant extend primitives or null/undefined values. so skip them
            if (!this.isObject(src) && !this.isFunction(src)) {
                continue;
            }
            let keys = Object.keys(src);
            let ki = keys.length;
            while (ki--) {
                let srcField = keys[ki];
                let srcValue = src[srcField];
                let destValue = srcValue;

                if (this.isObject(srcValue) && !Array.isArray(srcValue)) {
                    destValue = {};
                    this.extend(destValue, [dest[srcField], srcValue]);
                }

                dest[srcField] = destValue;
            }
        }

        return dest;
    }