UNPKG

@openshift-console/dynamic-plugin-sdk-webpack

Version:

Provides webpack ConsoleRemotePlugin used to build all dynamic plugin assets.

34 lines (33 loc) 1.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepForOwn = void 0; const _ = require("lodash"); const isPlainNonReactObject = (obj) => _.isPlainObject(obj) && !obj.$$typeof; /** * Recursive equivalent of `_.forOwn` function that traverses plain objects and arrays. */ const deepForOwn = (obj, predicate, valueCallback, pathParts = []) => { const visitValue = (value, key, container, newPathParts) => { const path = newPathParts.join('.'); if (predicate(value, path)) { valueCallback(value, key, container, path); } else if (isPlainNonReactObject(value)) { (0, exports.deepForOwn)(value, predicate, valueCallback, newPathParts); } }; Object.keys(obj).forEach((key) => { const value = obj[key]; const newPathParts = [...pathParts, key]; if (Array.isArray(value)) { value.forEach((arrayElement, index) => { const indexKey = index.toString(); visitValue(arrayElement, indexKey, value, [...newPathParts, indexKey]); }); } else { visitValue(value, key, obj, newPathParts); } }); }; exports.deepForOwn = deepForOwn;