@openshift-console/dynamic-plugin-sdk-webpack
Version:
Provides webpack ConsoleRemotePlugin used to build all dynamic plugin assets.
34 lines (33 loc) • 1.25 kB
JavaScript
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;
;