@mfederczuk/deeptools
Version:
A set of utility functions that recursively operate on objects
1 lines • 873 B
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.deepWalk=void 0;const utils_1=require("./_internal/utils");const deepFreeze_1=require("./deepFreeze");const deepWalkInternal=(keyPath,obj,visitorFunc,options,rootObject)=>{if(!(0,utils_1.isNonPrimitive)(obj)){return}for(const key of(0,utils_1.getPropertyKeys)(obj)){const depth=(options===null||options===void 0?void 0:options.depth)===true;const newKeyPath=[...keyPath,key];const value=obj[key];const descriptor=Object.getOwnPropertyDescriptor(obj,key);const visit=()=>visitorFunc(newKeyPath,value,obj,descriptor,rootObject);if(!depth){visit()}deepWalkInternal(newKeyPath,value,visitorFunc,options,rootObject);if(depth){visit()}}};function deepWalk(obj,visitorFunc,options){return deepWalkInternal([],obj,visitorFunc,options,obj)}exports.deepWalk=deepWalk;(0,deepFreeze_1.deepFreeze)(deepWalk);